Введение: Что такое Rsync и зачем он нужен?
Rsync — это мощный инструмент командной строки для синхронизации файлов и директорий между локальными и удалёнными системами. Он популярен среди разработчиков и администраторов благодаря оптимизации передачи данных, поддержке инкрементных копий и интеграции с SSH. В этой статье разберём, как использовать rsync для резервного копирования, зеркалирования и экономии трафика.
Основные команды Rsync: Быстрый старт
1. Локальная синхронизация
Синхронизируйте папку source/
с destination/
:
rsync -avh source/ destination/
-a
: Архивный режим (сохраняет права, метаданные).-v
: Вывод подробной информации.-h
: Читаемый формат размера файлов.
2. Удалённая синхронизация через SSH
Скопируйте файлы на удалённый сервер:
rsync -avz --partial --info=progress2 -e "ssh -T -c aes128-ctr -p 2222" /local/path/ user@remote-host:/remote/path/
-z
: Сжатие данных для ускорения передачи.-e
: Указание порта SSH (по умолчанию 22).--partial
: Сохраняет частично загруженные файлы.--info=progress2
: Показывает общий прогресс (не для каждого файла).-T
Oтключает псевдотерминал, ускоряет работу-c aes128-ctr
Eскоренный алгоритм шифрования- -p 2222 Порт на котором запущен ssh
3. Удаление лишних файлов в пункте назначения
Для создания точной копии (mirror) добавьте --delete
:
rsync -av --delete source/ destination/
Оптимизация скорости и безопасности
Исключение файлов: Используйте --exclude
для пропуска временных файлов:
rsync -av --exclude '*.tmp' source/ destination/
Ограничение трафика: Установите лимит с --bwlimit
(например, 500 КБ/с):
rsync -av --bwlimit=500 source/ remote-host:/backup/
Настройка Rsync в режиме сервера (демона)
Для автоматизации синхронизации в локальной сети или между серверами без использования SSH можно настроить Rsync в режиме демона. Это удобно для регулярных задач резервного копирования или раздачи статических данных.
1. Установка и настройка Rsync-сервера
На Linux (Ubuntu/Debian):
sudo apt install rsync
На Linux (CentOS/RHEL):
sudo yum install rsync
Создание конфигурационного файла /etc/rsyncd.conf
:
sudo nano /etc/rsyncd.conf
Пример конфигурации:
# Глобальные настройки
uid = nobody
gid = nobody
use chroot = yes
max connections = 4
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
# Модуль для резервных копий
[backup]
path = /var/backups
comment = Backup directory
read only = yes
auth users = backup_user
secrets file = /etc/rsyncd.secrets
hosts allow = 192.168.1.0/24 # Разрешить доступ только из локальной сети
list = yes
Создание файла с паролями:
sudo nano /etc/rsyncd.secrets
Добавьте строку в формате логин:пароль
:
backup_user:secure_password123
Установите права доступа:
sudo chmod 600 /etc/rsyncd.secrets
Запуск Rsync в режиме демона:
sudo systemctl enable rsync
sudo systemctl start rsync
Автоматизация резервного копирования с Cron
Добавьте задание в cron для ежедневного бэкапа в 3:00:
0 3 * * * rsync --avz --delete --partial -e "ssh -T -c aes128-ctr -p 22"/data/ user@backup-server:/backups/
2. Подключение клиента к Rsync-серверу
Используйте команду rsync
с указанием модуля, логина и пароля:
rsync -av /local/data/ backup_user@сервер::backup
Введите пароль при запросе.
Для автоматизации создайте файл с паролем на клиенте (например, ~/rsync_password
) и укажите его через --password-file
:
rsync -av --password-file=~/rsync_password /local/data/ backup_user@сервер::backup
Пример с явным указанием порта (по умолчанию 873):
rsync -av --port 873 /local/data/ backup_user@сервер::backup
Сравнение с SSH-режимом
Параметр | Rsync-демон | Rsync + SSH |
---|---|---|
Скорость | Быстрее (нет накладных расходов SSH) | Медленнее из-за шифрования |
Безопасность | Требует доп. настройки | Выше (все данные шифруются) |
Использование | Локальные сети, доверенные узлы | Публичные сети, интернет |
Сравнение Rsync с аналогами
- SCP/SFTP: Подходят для разовых копий, но не поддерживают инкрементальные обновления.
- Rclone: Работает с облачными хранилищами, но требует настройки API.
- Syncthing: Децентрализованная синхронизация, но менее гибкая в CLI.
Преимущества Rsync:
- Минимальный трафик — передаются только изменённые части файлов.
- Поддержка сложных фильтров (включение/исключение файлов).
- Кроссплатформенность (Linux, macOS, Windows через WSL).
Распространённые ошибки и их решение
- Ошибка прав доступа: Убедитесь, что у пользователя есть права на запись в целевую директорию.
- Обрыв соединения: Используйте
--partial
для возобновления передачи. - Несовпадение версий Rsync: Обновите утилиту на обоих хостах.