В Linux и других UNIX-системах для копирования файлов чаще всего используют команды cp и scp:
подробный разбор команд cp и mv.
Однако если нужно синхронизировать каталоги, обновлять резервные копии или оптимизировать передачу больших объёмов данных, лучшим решением становится rsync.
В этой статье мы рассмотрим, как работает rsync, приведём практические примеры и объясним, почему эта утилита является незаменимой в системном администрировании.
rsync (Remote Sync) — это утилита для быстрого и эффективного копирования и синхронизации файлов и директорий как локально, так и по сети.
Главные преимущества:
- Копирует только изменённые данные;
- Поддерживает SSH и другие удалённые протоколы;
- Умеет работать в режиме зеркалирования;
- Позволяет создавать резервные копии с минимальной нагрузкой.
Обычно rsync уже установлен в большинстве дистрибутивов.
rsync -v
Если нет — установить его можно так:
Debian / Ubuntu:
apt update
apt install rsync
CentOS / RHEL:
dnf install rsync
rsync [опции] источник назначение
Примеры:
rsync -av /home/user/docs/ /backup/docs/
- -a — архивный режим (сохраняет права, даты, симлинки);
- -v — подробный вывод (verbose);
- В конце /docs/ обязательно слеш, чтобы скопировать содержимое, а не сам каталог.
rsync -av /var/www/html/ /backup/html/
- Скопирует всё содержимое сайта в /backup/html;
- При следующем запуске скопирует только изменённые файлы;
- Удаленные файлы не затрагиваются (если не указано иначе).
rsync -avz -e ssh /etc/ user@192.168.1.100:/backup/etc/
- -z — сжатие данных при передаче;
- -e ssh — использование SSH-протокола;
- Отлично подходит для удалённой синхронизации между серверами.
rsync -av --delete /data/ /mnt/backup/data/
- Опция --delete удалит на стороне назначения те файлы, которых нет в источнике;
- Полезно для поддержания полной синхронизации двух каталогов.
⚠️ Будьте осторожны с --delete. Рекомендуется сначала использовать --dry-run, чтобы увидеть, что будет удалено:
rsync -av --delete --dry-run /data/ /mnt/backup/data/
Можно исключить отдельные файлы или типы файлов:
rsync -av --exclude '*.log' --exclude 'tmp/' /project/ /backup/project/
Для автоматизации резервного копирования используйте cron:
crontab -e
Добавьте строку:
0 3 * * * rsync -a /var/www/ /mnt/backup/www/ >> /var/log/rsync.log 2>&1
- Выполняется каждый день в 03:00;
- Весь вывод сохраняется в лог-файл.
После запуска rsync полезно проанализировать:
- Вывод команды (-v);
- Лог-файлы (--log-file=/var/log/rsync.log);
- Объём переданных данных (--progress, --stats).
Пример:
rsync -av --progress /data/ /backup/data/
- scp — простой, но всегда копирует всё заново;
- tar + ssh — хорош для архивов;
- rclone — для синхронизации с облачными хранилищами (Google Drive, S3);
- borg — продвинутый инструмент для резервного копирования.
Тем не менее, rsync остаётся золотым стандартом для синхронизации в Linux.
| Флаг | Назначение |
|---|---|
-a | Архивный режим (рекурсивно + сохраняет права) |
-v | Подробный вывод |
-z | Сжатие при передаче |
--delete | Удаление файлов на приёмнике |
--progress | Показывать прогресс передачи |
--exclude | Исключение файлов/каталогов |
rsync — универсальный инструмент для эффективного копирования и синхронизации данных.
Благодаря множеству настроек, поддержке SSH и возможности исключения файлов, он идеально подходит для системных администраторов, разработчиков и владельцев серверов.
Используйте rsync для:
- Резервного копирования;
- Зеркалирования данных;
- Синхронизации между серверами;
- Защиты от потери данных.