39

файлы

Предположим, что /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 и его содержимое?

1 ответ1

47

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

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

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

−a, −−архив >

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .