2013-09-26 4 views
27

Я использую Rsync для синхронизации файлов из источника к пункту назначения:Предотвращение Rsync удаления файлов назначение, которые соответствуют заданному шаблону

rsync -av --delete source destination 

У меня есть один каталог на стороне назначения, которая не на источник. Я хочу, чтобы rsync не удалял этот каталог. Есть ли опция, которую я могу передать rsync, чтобы предотвратить удаление этого каталога при синхронизации?

ответ

34

Вы можете исключить файлы/каталоги с помощью --exclude. Это предотвратит каталог somedir от синхронизируются/удален:

rsync -avrc --delete --exclude somedir source destination 
+5

Если вы хотите исключить «somedir» только из одного определенного места в дереве каталогов, вы можете привязать исключение с помощью «/». Это улучшит производительность - rsync будет проверять только один раз! например. 'rsync -avrc --delete --exclude/path/p2/somedir источник назначения' –

+0

@RandySkretka - спасибо за этот совет. Это то, чего мне не хватало. – Corin

+1

'-r' подразумевается' -a' и не требуется. –

21

Как уже упоминалось в similar question, это может быть достигнуто с помощью опции --filter с protect правилом:

$ rsync ... --filter 'protect /remote-directory-to-keep/' ... 

В отличие от принятого в настоящее время ответ , используя --filter, полезно, например, если вы также хотите использовать --exclude с --delete-excluded.

Смежные вопросы