Введение: Что такое 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).

Распространённые ошибки и их решение

  1. Ошибка прав доступа: Убедитесь, что у пользователя есть права на запись в целевую директорию.
  2. Обрыв соединения: Используйте --partial для возобновления передачи.
  3. Несовпадение версий Rsync: Обновите утилиту на обоих хостах.