Главная > Управление файлами и каталогами > rsync-delete

rsync --delete: Удаление файлов назначения для синхронизации с источником

Опция `--delete` команды `rsync` позволяет удалять файлы в целевом каталоге, которых нет в исходном каталоге, при синхронизации исходного и целевого каталогов. Это полезно при резервном копировании или зеркалировании, когда требуется точное соответствие целевого каталога источнику. Поскольку это мощная функция, требуется особая осторожность при использовании.

Обзор

`rsync --delete` копирует содержимое исходного каталога в целевой каталог, удаляя файлы или каталоги, которые существуют только в целевом каталоге, тем самым полностью синхронизируя оба местоположения. Он часто используется для синхронизации резервных копий, развертывания веб-серверов и синхронизации сред разработки.

Основные характеристики

  • Полная синхронизация исходного и целевого каталогов
  • Удаление файлов/каталогов, существующих только в целевом каталоге
  • Эффективная передача инкрементных данных
  • Поддержка удаленной синхронизации по сети

Основные опции

Основные опции, используемые вместе с `rsync --delete`. В частности, опция `--dry-run` должна использоваться первой, чтобы предотвратить критические ошибки.

Управление синхронизацией

Сгенерированная команда:

Комбинируйте команды.

Описание:

`rsync-delete` Запускает команду.

Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.

Примеры использования

`rsync --delete` — мощная функция, поэтому важно всегда сначала проверять результаты с помощью опции `--dry-run`.

Предварительный просмотр операций удаления (обязательно)

rsync -avn --delete /path/to/source/ /path/to/destination/

Синхронизируйте исходный каталог (`/path/to/source`) с целевым каталогом (`/path/to/destination`) и предварительно просмотрите, какие файлы будут удалены. Фактические изменения не происходят.

Фактическая синхронизация и удаление

rsync -av --delete /path/to/source/ /path/to/destination/

После проверки безопасности с помощью предварительного просмотра синхронизируйте исходный и целевой каталоги и удалите файлы, существующие только в целевом каталоге. `-a` означает режим архивации, `-v` — подробный вывод.

Синхронизация и удаление с исключением определенных файлов/каталогов

rsync -av --delete --exclude='logs/' --exclude='*.tmp' /path/to/source/ /path/to/destination/

Удалите файлы в целевом каталоге, которых нет в исходном, но исключите определенные файлы или каталоги (например, каталог `logs/` и файлы `*.tmp`) из операций удаления и синхронизации.

Синхронизация и удаление с удаленным сервером

rsync -av --delete /path/to/local/source/ user@remote_host:/path/to/remote/destination/

Синхронизируйте содержимое локального каталога с каталогом на удаленном сервере и удалите файлы, существующие только на удаленном сервере. Передача осуществляется безопасно через SSH.

Советы и меры предосторожности

`rsync --delete` может быть очень мощной и разрушительной командой, поэтому при использовании необходимо учитывать следующие моменты.

Самые важные меры предосторожности

  • **Всегда сначала используйте `--dry-run` (-n)**: Обязательно проверяйте, какие файлы будут удалены, перед фактическим выполнением.
  • **Проверьте пути к источнику (Source) и назначению (Destination)**: Неправильное указание путей может привести к непреднамеренной потере данных.
  • **Обязательное резервное копирование**: Всегда выполняйте резервное копирование перед работой с важными данными.
  • **Важность слеша (/)**: Наличие слеша в конце пути к источнику означает копирование *содержимого* каталога, отсутствие — *самого каталога*. Эта разница важна при использовании с `--delete`.

Разница в слешах (/) в путях

Наличие или отсутствие слеша в конце пути к источнику влияет на поведение.

  • `rsync -av --delete source/ dest/`: Копирует *содержимое* каталога `source` в `dest` и удаляет файлы, существующие только в `dest`. Сам каталог `source` не создается в `dest`.
  • `rsync -av --delete source dest/`: Копирует *сам* каталог `source` внутрь каталога `dest`. То есть создается путь `dest/source/`. Если в `dest` уже существует файл с таким же именем, как у каталога `source`, он может быть удален.

Те же команды в категории