Просить rsync удалять файлы на принимающей стороне, которых нет на стороне отправки, с исключениями на принимающей стороне

Я прочитал эти темы:

Но, насколько я могу судить (может быть, я чего-то не хватает), они не охватывают следующий вопрос:

Как вы просите rsync скопировать файлы и удалить их на принимающей стороне, которые не существуют на отправляющей стороне, с исключениями ? (например, не удалять меркурийный репозиторий .hg на принимающей стороне, даже если на отправляющей стороне нет репозитория).

Одна возможность?

Заимствование из ответа @Richard Holloway ниже. Скажем, у меня есть следующая строка:

rsync -av --exclude=dont_delete_me --delete /sending/path /receiving/path

Насколько я понимаю, эта строка сделает rsync удалить все на пути приема, которого нет на пути отправки, кроме тех, которые соответствуют dont_delete_me. Теперь мой вопрос: будет ли rsync хранить файлы на принимающей стороне, которые соответствуют dont_delete_me , даже если ничего на стороне отправки не соответствует dont_delete_me

28 голосов | спросил Amelio Vazquez-Reina 11 PM00000060000002031 2011, 18:24:20

1 ответ


33

Если вы используете --delete и --exclude вместе то, что находится в исключенном месте, не будет удалено, даже если исходные файлы будут удалены.

Но проблема в том, что папка вообще не будет rsync 'd. Поэтому вам понадобится другое задание rsync на sync эту папку.

Eg.

rsync -nav /home/richardjh/keepall/ /home/backup/richardjh/keepall/
rsync -nav --exclude=keepall --delete /home/richardjh /home/backup/richardjh

Вы можете запустить их по-другому, но затем удалите все удаленные файлы и замените их, что не так эффективно.

Вы не можете сделать это как один лайнер.

ответил Richard Holloway 11 PM00000070000004731 2011, 19:45:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132