Чи 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та його зміст?


Вам потрібен --deleteвимикач.
фіделі

Відповіді:


51

За замовчуванням rsync не видаляє файли, але це залежить від параметрів команд, які ви вказали. Ви можете використовувати будь-яке нижче, якщо хочете видалити файли:

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

Оскільки ви спеціально викликали варіант -a , ось що пише "man" сторінка

−a, −−archive >

Це еквівалентно −rlptgoD . Це швидкий спосіб сказати, що ви хочете рекурсії і хочете зберегти майже все (при цьому -Н є помітним упущенням). Єдиним винятком з вищезгаданої еквівалентності є те, коли −files − з вказано, у цьому випадку −r не мається на увазі.

Зауважте, що -a не зберігає жорсткі посилання , тому що знайти багатозв'язані файли дорого. Ви повинні окремо вказати –H .

Тож здається, що відповідь на ваше запитання "НІ", вона не буде видалена з урахуванням ваших прикладів.
HTH

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.