G'Day,
Я использую rsync для рекурсивной синхронизации дерева удаленных папок, которое выглядит примерно так:
/folderA/a1/cache
/folderA/a1/cache/A1
/folderA/a1/cache/A2
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder/cache
/folderB/cache/
/folderB/b1/somefolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache/B1
/folderB/b1/somefolder/yetanotherfolder/cache/B2
Я не знаю, как будет выглядеть дерево папок, и оно со временем изменится. Так что я хочу сделать это рекурсивно rsync выше, но исключить папку "кеш" и любые подпапки, которые он содержит, чтобы я в конечном итоге закончил синхронизацию:
/folderA/a1
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder
/folderB/
/folderB/b1/somefolder
/folderB/b1/somefolder/yetanotherfolder/
Какие-либо предложения?
Ответы:
Вы хотите
--exclude
флаг. Например, локальный rsync:Это действительно так просто - это правило исключения будет соответствовать каталогу с именем «cache» в любом месте вашего дерева.
Для получения дополнительной информации ищите «--exclude» и раздел «ПРАВИЛА ФИЛЬТРА» на справочной странице rsync:
http://www.samba.org/ftp/rsync/rsync.html
источник
a/cache
. UPD Посмотри этот ответ--exclude /cache/
(с начальным /) будет исключен толькоa/cache
каталог, а не каталог с именемcache
.a/ b/
в приведенной выше командной строке, что это значит?a/
каталог, из которого мы синхронизируем (или копируем);b/
каталог, в который мы синхронизируемся.