Как использовать rsync для инкрементального бэкапа и синхронизации файлов

7 минут чтения
Средний рейтинг статьи — 4.7

В мире Linux утилита rsync уже много лет остаётся одним из самых удобных инструментов для резервного копирования и синхронизации данных. Её ценят системные администраторы, разработчики и DevOps-инженеры: rsync быстро копирует только изменившиеся файлы, умеет работать по сети через SSH и поддерживает множество опций для гибкой автоматизации.

Что такое rsync

rsync — это консольная утилита для эффективной передачи файлов и каталогов. В отличие от обычного cp или scp, она использует алгоритм сравнения блоков (delta-transfer): пересылаются только те фрагменты файлов, которые изменились.
Это делает rsync особенно полезным для:

  • Инкрементального бэкапа — каждый последующий запуск копирует только новые или изменённые данные.
  • Зеркалирования каталогов — поддержание одинаковой структуры на двух серверах.
  • Синхронизации через сеть — например, между рабочей станцией и удалённым сервером.

Установка

На большинстве дистрибутивов rsync уже предустановлен. Если нет:

Ubuntu/Debian:

sudo apt update
sudo apt install rsync

CentOS/RHEL:

sudo yum install rsync

Проверить версию:

rsync --version

Базовый синтаксис

Общий вид команды:

rsync [опции] источник назначение

Источник и назначение могут быть как локальными путями, так и удалёнными через SSH:

rsync [опции] user@remote:/path/to/source /local/backup/

Основные ключи

  • -a — архивный режим: сохраняет права, владельцев, симлинки, рекурсивно копирует каталоги.
  • -v — подробный вывод (verbose).
  • -z — сжатие при передаче (полезно по медленным каналам).
  • -P — прогресс + возможность докачки при обрыве.
  • --delete — удалять файлы в приёмнике, которых нет в источнике (для полного зеркала).

Часто используется связка -avz или -avzP.

Пример локальной синхронизации

Копирование каталога /data в /backup:

rsync -avz /data/ /backup/

Обратите внимание на слэш в конце: /data/ означает «содержимое папки», без слэша — «папку целиком».

Синхронизация по сети (через SSH)

Rsync может использовать SSH без дополнительных настроек:

rsync -avzP -e ssh user@server:/var/www/ /local/www/
  • -e ssh — явно указываем протокол.
  • Для автоматизации удобно настроить вход по SSH-ключу, чтобы не вводить пароль каждый раз.

Инкрементальный бэкап с жёсткими ссылками

Инкрементальный бэкап — это когда каждый «срез» хранит полную копию данных, но реально пересылаются и занимают место только изменённые файлы.

Rsync реализует это через опцию --link-dest:

rsync -a --link-dest=/backups/daily.1/ /data/ /backups/daily.0/

Здесь:

  • /backups/daily.1/ — предыдущий бэкап, на который создаются жёсткие ссылки для неизменённых файлов.
  • /backups/daily.0/ — новый каталог для свежего бэкапа.

Результат — полный снапшот, а место занимают только дельты.
Так можно делать ежедневные копии и хранить их неделями без лишних трат дискового пространства.

Автоматизация через cron

Чтобы бэкап выполнялся регулярно, добавьте задание в crontab:

0 2 * * * rsync -a --delete /data/ /backup/

Команда запустится каждый день в 2:00 ночи.

Полезные приёмы

  • Исключения: --exclude 'cache/' — не копировать временные каталоги.
  • Логи: --log-file=/var/log/rsync.log — сохранять вывод в файл.
  • Тестовый прогон: --dry-run — показать, что будет скопировано, без реальных изменений.

Безопасность

  • Используйте только защищённый канал SSH, особенно в публичных сетях.
  • Настройте ключи и ограничьте доступ к пользователю, от имени которого запускается rsync.
  • Для больших инфраструктур можно поднять rsync-сервер (rsync daemon), но он требует отдельной конфигурации и обычно не нужен для простого бэкапа.

Итоги

rsync остаётся одним из самых мощных инструментов для резервного копирования и синхронизации в Linux. Благодаря инкрементальному копированию и поддержке SSH можно создавать надёжные и экономичные бэкап-системы без сложных решений.
Для маленьких проектов часто достаточно одной строки в cron, а для больших — rsync легко интегрируется в скрипты и системы автоматизации.

7 минут чтения
Средний рейтинг статьи — 4.7

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний