Без отдельного ключа rsync только добавляет и обновляет. Разберём, что и где удаляет --delete.
После синхронизации в начале урока в mirror остался obsolete.txt, которого нет в source. С ключом --delete rsync удаляет из назначения всё, чего нет в источнике, — в плане это строки *deleting:
Удаляет rsync только внутри каталога, куда копирует. Каталог keep рядом с mirror он не тронет. С источником без черты удалять он будет только в mirror/source/: obsolete.txt на верхнем уровне mirror останется.
Источник rsync не проверяет: какой каталог назвали первым, тот и эталон. Пустой источник — например, каталог, куда не смонтирован диск, — даёт план, где каждый файл копии помечен *deleting и нет ни одной строки >f.
Запуск такого плана без -n сотрёт всю копию. С --delete сначала смотрят план и читают каждую строку *deleting.
План rsync -ain --delete site/ /backup/site/ — сотня строк *deleting и ни одной строки >f. Что сделаешь?
-
Сотня удалений без единой передачи — признак пустого или не того источника. Запуск сотрёт копию: сначала посмотри
ls site. -
Без черты rsync положит сам каталог
siteвнутрь назначения — в/backup/site/site/, а пустой источник останется пустым. -
-cменяет способ сравнения файлов, а не набор удалений: то, чего нет в источнике,--deleteудалит и с-c.
Одни удаления в плане значат, что источник пуст или не тот: например, диск в site не смонтирован. Сначала проверь источник, потом запускай.
Главное в шаге
-
--deleteудаляет из назначения то, чего нет в источнике, и только внутри каталога, куда идёт копирование. -
План, где одни удаления и ни одной передачи
>f, — признак пустого или не того источника.