RSync - Виключення певного підкаталогу та його дочірніх файлів, де підкаталог існує на різних рівнях


37

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

Я не знаю, як буде виглядати дерево папок, і воно зміниться з часом. Отже, те, що я хочу бути в змозі - це рекурсивно синхронізувати вищезазначене, але виключити кеш-папку та всі підпапки, які вона містить, щоб я врешті-решт синхронізував:

/folderA/a1
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder
/folderB/
/folderB/b1/somefolder
/folderB/b1/somefolder/yetanotherfolder/

Будь-які пропозиції?


Відповіді:


55

Ви хочете --excludeпрапор. Наприклад, локальна rsync:

rsync -a --exclude cache/ src_folder/ target_folder/

Це дійсно так просто - правило, що виключає, буде відповідати директорії з назвою "кеш" в будь-якому місці вашого дерева.

Для отримання додаткової інформації шукайте "--exclude" та розділ "ПРАВИЛА ФІЛЬТРА" на сторінці людини rsync:

http://www.samba.org/ftp/rsync/rsync.html


1
До !! Дякую, що мені подобаються найпростіші відповіді :-)
TheEdge

1
А як щодо ніде на дереві? Мовляв, виключити тільки a/cache. UPD Дивіться цю відповідь
x-yuri

2
Також --exclude /cache/(з провідним /) буде виключений лише a/cacheкаталог, а не будь-який каталог, названий cache.
Амір Алі Акбарі

Чому a/ b/у наведеному вище командному рядку, що це означає?
Даніель

1
@Danijel: a/це каталог, з якого ми синхронізуємо (або копіюємо); b/це каталог, в який ми синхронізуємо.
Джандер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.