Обзор
`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`, он может быть удален.