RSync - исключение конкретного подкаталога и его дочерних элементов, где подкаталог существует на разных уровнях
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 выше, но exclude папка «cache» и любые вспомогательные папки, которые она содержит, чтобы я в конечном итоге завершил синхронизацию:
/folderA/a1
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder
/folderB/
/folderB/b1/somefolder
/folderB/b1/somefolder/yetanotherfolder/
Любые предложения?
1 ответ
41
Вам нужен флаг --exclude
. Например, локальный rsync:
rsync -a --exclude cache/ src_folder/ target_folder/
Это действительно так просто - правило exclude будет соответствовать каталогу с именем «cache» в любом месте вашего дерева.
Для получения дополнительной информации найдите раздел «--exclude» и «FILTER RULES» на странице руководства rsync:
ответил Jander 13 Jpm1000000pmThu, 13 Jan 2011 12:25:07 +030011 2011, 12:25:07