Linux Labs

Хранилище / Ступень 10 из 11

Rsync — зеркало, сравнение и границы удаления

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 4 из 8 · теория · 5 мин

Удаление лишнего в копии

Без отдельного ключа rsync только добавляет и обновляет. Разберём, что и где удаляет --delete.

После синхронизации в начале урока в mirror остался obsolete.txt, которого нет в source. С ключом --delete rsync удаляет из назначения всё, чего нет в источнике, — в плане это строки *deleting:

text
$ rsync -ain --delete source/ mirror/
*deleting   obsolete.txt
>f+++++++++ new.txt
>f..t...... data/orders.csv

Удаляет rsync только внутри каталога, куда копирует. Каталог keep рядом с mirror он не тронет. С источником без черты удалять он будет только в mirror/source/: obsolete.txt на верхнем уровне mirror останется.

Источник rsync не проверяет: какой каталог назвали первым, тот и эталон. Пустой источник — например, каталог, куда не смонтирован диск, — даёт план, где каждый файл копии помечен *deleting и нет ни одной строки >f.

Внимание

Запуск такого плана без -n сотрёт всю копию. С --delete сначала смотрят план и читают каждую строку *deleting.

Проверь себя 1 вопрос

План rsync -ain --delete site/ /backup/site/ — сотня строк *deleting и ни одной строки >f. Что сделаешь?

  • Сотня удалений без единой передачи — признак пустого или не того источника. Запуск сотрёт копию: сначала посмотри ls site.

  • Без черты rsync положит сам каталог site внутрь назначения — в /backup/site/site/, а пустой источник останется пустым.

  • -c меняет способ сравнения файлов, а не набор удалений: то, чего нет в источнике, --delete удалит и с -c.

Одни удаления в плане значат, что источник пуст или не тот: например, диск в site не смонтирован. Сначала проверь источник, потом запускай.

Главное в шаге

  • --delete удаляет из назначения то, чего нет в источнике, и только внутри каталога, куда идёт копирование.
  • План, где одни удаления и ни одной передачи >f, — признак пустого или не того источника.
Ubuntu 24.04
Загрузка…