Rsync удаляет файлы, папки в месте назначения по умолчанию?

44

файлы

Предположим, что /foo/srcсодержит только A.cи /foo/destсодержит как A.cи B.c. И предположим, что я запускаю следующую команду:

rsync /foo/src/ /foo/dest

Будет ли rsyncстирать B.c?

Папки

Теперь предположим, что он /foo/srcсодержит каталог Aс некоторыми файлами внутри, и который /foo/destсодержит оба каталога Aи B, каждый, с некоторыми файлами внутри них. И предположим, что я запускаю следующую команду (опция -a включает -r, рекурсивно):

rsync -a /foo/src/ /foo/dest

Будет ли rsyncстираться Bи его содержимое?

Crowder
источник
Вам нужен --deleteпереключатель.
Фидели

Ответы:

51

По умолчанию rsync не удаляет файлы, но это зависит от указанных вами опций команд. Вы можете использовать любое из следующих, если вы хотите удалить файлы:

  • −−del (псевдоним для −−delete − в течение)
  • - удалить (удалить посторонние файлы из директорий dest)
  • -Delete-before (получатель удаляет перед xfer [по умолчанию])
  • - удалить - во время (получатель удаляет во время xfer, но не раньше)
  • -Delete-after (получатель удаляет после xfer, а не до)
  • - удалить - исключить (также удалить исключенные файлы из директорий dest)
  • −−max − delete = NUM ​​(не удаляйте более NUM файлов)

Поскольку вы специально вызвали опцию -a , вот что написано на странице руководства

−a, −−архив >

Это эквивалентно -rlptgoD . Это быстрый способ сказать, что вы хотите рекурсию и хотите сохранить почти все (при этом -H - заметное упущение). Единственное исключение из вышеприведенной эквивалентности - это когда -−files-from указан, и в этом случае -r не подразумевается.

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

Таким образом, кажется, что ответ на ваш вопрос НЕТ, он не будет удален, учитывая ваши примеры.
НТН

SaxDaddy
источник