Команда Linux rsync
Что такое команда rsync
rsync (Remote Sync) — это мощный инструмент синхронизации файлов в системах Linux. Он позволяет эффективно синхронизировать файлы и каталоги между локальными или удалёнными системами. rsync известен своим алгоритмом «инкрементальной передачи», который передаёт только различия между исходными и целевыми файлами, значительно повышая эффективность передачи файлов.
Основные возможности rsync
- Инкрементальная синхронизация: передаёт только изменённые части файлов, экономя пропускную способность и время
- Сохранение атрибутов: может сохранять метаданные, такие как права доступа к файлам и временные метки
- Сжатая передача: поддерживает сжатие данных при передаче, снижая нагрузку на сеть
- Гибкое исключение: может исключать определённые файлы или каталоги
- Поддержка удалённого доступа: безопасно синхронизировать файлы удалённого сервера через SSH
Базовый синтаксис rsync
rsync [选项] 源文件 目标文件
Общие формы команд
Локальная синхронизация:
rsync -av /path/to/source/ /path/to/destination/
Синхронизация с локального на удалённый:
rsync -avz /local/path/ username@remote_host:/remote/path/
Синхронизация с удалённого на локальный:
rsync -avz username@remote_host:/remote/path/ /local/path/
Подробное объяснение общих опций rsync
| Опция | Полное название | Описание |
|---|---|---|
| -a | --archive | Режим архива, сохраняет все атрибуты файлов (эквивалентно -rlptgoD) |
| -v | --verbose | Отображать подробную информацию о передаче |
| -z | --compress | Сжимать данные во время передачи |
| -r | --recursive | Рекурсивно копировать каталоги |
| -l | --links | Сохранять символические ссылки |
| -p | --perms | Сохранять права доступа к файлам |
| -t | --times | Сохранять время изменения файла |
| -g | --group | Сохранять группу файла |
| -o | --owner | Сохранять владельца файла |
| -D | --devices | Сохранять файлы устройств (только для суперпользователя) |
| -h | --human-readable | Выводить числа в удобочитаемом формате |
| --progress | Показывать ход передачи | |
| --delete | Удалять файлы в месте назначения, которых нет в источнике | |
| --exclude=PATTERN | Исключить файлы, соответствующие PATTERN | |
| --include=PATTERN | Включить файлы, соответствующие PATTERN |
Практические примеры применения rsync
Пример 1: Синхронизация локального каталога
Пример
rsync -av /home/user/docs/ /backup/docs/
Примечание: Слэш после исходного каталога/очень важен:
- Со слешем: синхронизировать содержимое каталога
- Без слеша: синхронизировать сам каталог
Пример 2: Резервное копирование на удалённый сервер
Пример
rsync -avz /data/backups/ user@example.com:/remote/backups/
Пример 3: Синхронизация с параметрами исключения
Пример
rsync -av --exclude='*.tmp' --exclude='log/' /source/ /destination/
Пример 4: Полная согласованность обоих концов (удаление лишних файлов на целевом узле)
Пример
Расширенное использование rsync
1. Использование нестандартного порта SSH
Пример
2. Ограничение пропускной способности (ограничено до 500KB/s)
Пример
3. Частичная передача (передавать только файлы размером больше 100KB)
Пример
4. Скрипт резервного копирования по расписанию
Пример
rsync -avz --delete /important/data/ backup@server:/backups/data/
echo "Резервное копирование завершено в $(date)" >> /var/log/backup.log
rsync: часто задаваемые вопросы
Вопрос 1: В чем разница между rsync и scp?
- rsync: инкрементальная синхронизация, передаёт только различия, подходит для регулярных резервных копий
- scp: полная передача каждый раз, подходит для однократной передачи файлов
Q2: Как возобновить прерванную передачу rsync?
Используйте--partialопция для сохранения частично переданных файлов:
Пример
Q3: Как посмотреть, что сделает rsync, без фактического выполнения?
Используйте-nопция (dry-run):
Пример
Q4: Как улучшить скорость передачи rsync?
- Используйте
-zопция для включения сжатия - Используйте
--compress-level=Nнастройка уровня сжатия (1-9) - Отключить вычисление контрольной суммы (только для доверенных сетей):
--no-checksum
Рекомендации по лучшим практикам
- Сначала протестируйте: используйте
-nопция для предварительного пробного запуска - Логирование: добавьте
--log-file=rsync.logдля записи операций - Управление правами доступа: рассмотрите использование
--chmodдля унификации прав доступа к файлам - Запланированные задачи: сочетайте с crontab для автоматического резервного копирования
- Безопасная передача: всегда выполняйте удалённую передачу через SSH
Итог
rsync — незаменимый инструмент для системных администраторов Linux и разработчиков. Его освоение позволяет вам:
- Эффективно выполнять локальную и удалённую синхронизацию файлов
- Внедрять решения для автоматического резервного копирования
- Оптимизировать передачу данных по сети
- Поддержание согласованности файловой системы
В этой статье вы должны были освоить базовое использование и продвинутые приёмы rsync. Рекомендуется больше практиковаться в реальной работе и постепенно открывать для себя другие мощные возможности rsync.
Другие расширения
Полный список команд Linux