Как использовать rsync для резервного копирования данных в Linux
Быстрые ссылки
- Использование rsync для локальных резервных копий
- Использование rsync для внешних резервных копий
- Автоматизация rsync
- Дополнительные полезные возможности
- Полезные команды и контрольные списки

Введение: что такое rsync
rsync это сетевой и локальный инструмент синхронизации файлов для Unix-подобных систем. Простая формулировка: rsync сравнивает исходную и целевую директории и передаёт только изменённые части файлов, экономя пропускную способность и время. Ключевые преимущества в одно предложение: экономия трафика, гибкие фильтры, поддержка SSH и режим демона, а также компактные опции для инкрементных снимков.
Определение терминов в одну строку:
- Инкрементный перенос: передача только изменённых частей файлов.
- Точка монтирования и директория назначения: папка, куда сохраняются резервные копии.
Важно: rsync доступен на Linux по умолчанию в репозиториях. На Windows можно использовать WSL или Cygwin для запуска rsync.
Установка
На популярных дистрибутивах команда установки выглядит так
# Red Hat / CentOS / RHEL
yum install rsync
# Debian / Ubuntu
sudo apt-get install rsync
# Arch Linux
sudo pacman -S rsyncДля Windows рассмотрите WSL2 или Cygwin, чтобы получить стабильную реализацию rsync.
Внимание
На серверах всегда устанавливайте последние патчи безопасности и проверяйте целостность пакетов через подписи дистрибутива.
Базовый пример для локальных резервных копий
Этот пример синхронизирует содержимое /Directory1/ в /Directory2/ и удаляет лишние файлы в целевой директории, чтобы добиться зеркала.
$ rsync -av --delete /Directory1/ /Directory2/Разбор ключей
-a— режим архива: рекурсивно копирует и сохраняет права, владельцев, временные метки, символьные ссылки и специальные файлы-v— подробный вывод--delete— удаляет в целевой директории файлы, которых нет в исходной
Советы
- Нужна предварительная проверка? добавьте
-nили--dry-runчтобы увидеть, какие действия будут выполнены, без фактической передачи данных - Следите за завершающими косыми чертами
/в путях./source/копирует содержимое каталога, а/sourceкопирует сам каталог как подкаталог в целевой пути
Пример вывода и иллюстрация операции

Пояснение: в примере rsync обнаружил новые или изменённые файлы и скопировал их в целевую директорию. Всегда используйте -v при первом тестировании и --dry-run перед включением автоматизации.
Защита от случайных удалений и политики версий
Использование --delete опасно, если нет стратегии восстановления. Вот варианты, как смягчить риск:
- Использовать
--backupи--backup-dirчтобы сохранять удалённые или перезаписанные файлы в отдельную директорию
rsync -av --delete --backup --backup-dir=/backups/old/$(date +%F) /Directory1/ /Directory2/- Использовать
--suffixчтобы пометить резервные копии
rsync -av --backup --suffix=.bak /Directory1/ /Directory2/- Инкрементные снимки с
--link-destдля экономного хранения копий с помощью жестких ссылок
# Создать ежедневную снимок с использованием предыдущего снимка как основы
rsync -av --link-dest=/backups/day-1 /Directory1/ /backups/day-2/Пояснение: --link-dest помогает хранить множество «снимков» без дублирования неизменённых данных. Это часто применяют в сценариях с архивами типа rsnapshot.
Внешние резервные копии через SSH
Наиболее простой и безопасный способ отправлять резервные копии на удалённый хост это использовать SSH в качестве туннеля для rsync.
Пример отправки на сервер с логином geek и IP 192.168.235.137:
$ rsync -av --delete -e ssh /Directory1/ geek@192.168.235.137:/Directory2/Если SSH прослушивает нестандартный порт, укажите его так:
$ rsync -av --delete -e 'ssh -p 12345' /Directory1/ geek@192.168.235.137:/Directory2/
Автоматизация аутентификации — ключ к регулярным задачам. Настройка SSH-ключей:
# На клиенте
ssh-keygen -t ed25519 -C 'backup-key'
ssh-copy-id -i ~/.ssh/id_ed25519.pub geek@192.168.235.137
# Или вручную добавить содержимое id_ed25519.pub в ~/.ssh/authorized_keys на сервереВажно: защищайте приватный ключ паролем, либо используйте агент ssh-agent и безопасное хранилище ключей.
Альтернативы SSH
- rsync daemon (rsyncd) с авторизацией по паролю или файлу паролей — полезно при большом количестве клиентов и когда требуется меньшая нагрузка на SSH
- rclone для облачных провайдеров
Настройка rsync daemon — краткая конфигурация
Если нужно обслуживать множественные клиенты или повысить производительность, можно запустить rsyncd. Пример /etc/rsyncd.conf:
uid = nobody
gid = nogroup
use chroot = yes
max connections = 4
secrets file = /etc/rsyncd.secrets
[backups]
path = /srv/rsync/backups
read only = false
auth users = backupuserФайл с секретами /etc/rsyncd.secrets имеет формат user:password и должен иметь права 600.
Запуск:
rsync --daemonЗамечание: rsyncd передаёт данные в незашифрованном виде по умолчанию, поэтому либо запускайте его через туннель SSH, либо используйте VPN сети.
Автоматизация: cron и systemd timers
Cron — классический инструмент для периодических задач.
# отредактировать crontab для текущего пользователя
crontab -e
# пример: ежедневный запуск в 22:00
0 22 * * * rsync -az --delete /Directory1/ /Directory2/ >> /var/log/rsync-backup.log 2>&1Система systemd предоставляет более современный подход с таймерами и удобством логирования.
Пример unit файла /etc/systemd/system/rsync-backup.service:
[Unit]
Description=Rsync backup job
[Service]
Type=oneshot
ExecStart=/usr/local/bin/rsync-backup.shТаймер /etc/systemd/system/rsync-backup.timer:
[Unit]
Description=Run rsync backup daily
[Timer]
OnCalendar=*-*-* 22:00:00
Persistent=true
[Install]
WantedBy=timers.targetАктивировать:
systemctl daemon-reload
systemctl enable --now rsync-backup.timerПреимущество systemd: гибкая запись логов в journald и возможность зависимости от состояния системы.
Архивация, сжатие и шифрование
- Локальное шифрование диска: LUKS/BitLocker — наиболее простая защита от кражи физического носителя
- Шифрование файлов: GPG или OpenSSL перед отправкой на удалённый сервер
Пример создания зашифрованного архива перед rsync:
tar -c /Directory1/ | gzip -c | gpg -c -o /tmp/archive.tar.gz.gpg
rsync -av /tmp/archive.tar.gz.gpg backup@host:/backups/Преимущества и недостатки
- Плюс: зашифрованные архивы защищают от просмотра на стороне хранения
- Минус: компрессия и шифрование мешают rsync выявлять «дельты» внутри сжатого контейнера, но rsync всё равно часто передаёт только изменённые блоки за счёт алгоритма дельт
Часто используемые опции rsync и когда их применять
-z— сжатие по сети, полезно при медленном канале--partial— сохранять частично загруженные файлы для возобновления--progress— показывать прогресс передачи--bwlimit=KBPS— ограничить пропускную способность--excludeи--include— фильтрация файлов/папок--checksumили-c— сравнение по контрольным суммам, но дорого по дисковым операциям--itemize-changes— вывод структурированных изменений
Пример сложной команды с фильтрацией и лимитом:
rsync -avz --partial --progress --bwlimit=5000 --exclude='*.cache' /Directory1/ geek@remote:/Directory2/Тестирование и критерии приёмки
Критерии приёмки резервного процесса:
- Резервные задачи выполняются по расписанию без ошибок в течение двух недель
- Тестовое восстановление ключевого набора файлов прошло успешно и прошло проверку хэшей
- Приватные ключи и доступы защищены и задокументированы
- Период хранения и ротация архивов соответствуют политике
Минимальные тесты и проверки
- Запуск
--dry-runи проверка списка изменений - Восстановление отдельного файла и проверка контрольной суммы
- Проверка логов Cron/systemd на отсутствие ошибок
Пример простых тест-кейсов
- TC01: Выполнить
rsync -av --dry-runи подтвердить отсутствие неожиданных удалений - TC02: Выполнить полный перенос 1 ГБ данных и восстановить 5 файлов
- TC03: Откат к резервной копии, созданной 7 дней назад, и верификация метаданных
Восстановление данных — сценарии
- Восстановление одного файла из зеркала
rsync -av geek@remote:/Directory2/path/to/file.txt /restore/location/- Восстановление директории из снимка с
--link-dest
rsync -av /backups/day-7/ /restore/location/- Восстановление после случайного удаления: используйте
--backup-dirчтобы найти удалённые версии и восстановить их
Безопасность и лучшие практики
- Используйте SSH-ключи вместо паролей для автоматизации
- Ограничьте доступ по IP на стороне сервера через firewall
- Привязывайте ключи SSH к конкретной команде с опцией
command=вauthorized_keysесли нужно разрешить только rsync - Храните логи и сохраняйте исходы тестов восстановления
- Шифруйте резервные копии при хранении и передаче в не доверенных сетях
Пример записи в authorized_keys для ограничения команды
command="/usr/bin/rsync --server --sender -logDtpr . /backups/",no-agent-forwarding,no-pty ssh-ed25519 AAAA...backup-keyУстранение неполадок
Проблемы и быстрые решения
- Ошибка доступа при записи в целевую директорию: проверьте права и владельца
- Медленная передача: добавьте
-z, используйте--bwlimitпри доле сетевого трафика, проверьте MTU - Не передаются изменения метаданных: используйте
-aили явно включите-p-o-g - rsync удаляет файлы неожиданно: проверьте
--deleteв crontab, выполните--dry-run
Диагностика
- Добавляйте
-vvи проверяйте вывод - Проверяйте логи SSH и journald
- Используйте
straceилиlsofдля редких проблем с файловой системой
Шаблоны и примеры сценариев
Шаблон скрипта резервного копирования /usr/local/bin/rsync-backup.sh
#!/bin/bash
set -euo pipefail
LOGFILE=/var/log/rsync-backup.log
BACKUP_SRC=/Directory1/
BACKUP_DEST=geek@192.168.235.137:/Directory2/
RSYNC_OPTS='-az --delete --backup --backup-dir=/backups/old/$(date +%F) --partial --progress'
# dry run при первом аргументе test
if [[ ${1-} == 'test' ]]; then
rsync --dry-run $RSYNC_OPTS "$BACKUP_SRC" "$BACKUP_DEST"
exit 0
fi
rsync $RSYNC_OPTS "$BACKUP_SRC" "$BACKUP_DEST" >> "$LOGFILE" 2>&1Права и автоматизация
chmod +x /usr/local/bin/rsync-backup.sh
# подключите скрипт в systemd timer или crontabРоли и контрольные списки
Администратор
- Проверить установку rsync и SSH
- Сгенерировать и защитить SSH-ключи
- Настроить автоматизацию и мониторинг
Оператор
- Проверять логи после выполнения
- Выполнять тестовые восстановление раз в месяц
- Менеджер инцидента для обращения при ошибках
Разработчик
- Согласовать списки исключений и включений
- Тестировать восстановление важных данных
Сравнение подходов: rsync vs другие инструменты
- rsync: отлично для файловой синхронизации и гибких сценариев на уровне файлов
- rclone: лучше при работе с облачными провайдерами
- borg/restic: поддерживают дедупликацию и встроенное шифрование, подходят для архивов с большим объёмом данных
Выбор зависит от требований к дедупликации, шифрованию и удобству восстановления.
Полезная таблица команд Linux
| Категория | Команды Linux |
|---|---|
| Файлы | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr |
| Процессы | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap |
| Сеть | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |
Примеры когда rsync не лучший выбор
- Большие блочные хранилища или виртуальные диски: лучше использовать копирование образов на уровне блоков
- Сценарии с требованием полной проверки целостности всех версий: специализированные архиваторы с дедупликацией (borg, restic)
Короткая инструкция по миграции с другого решения
- Синхронизируйте текущие данные в режимах dry-run и затем в реальном времени
- Проверьте восстановление из нового хранилища
- Параллельно держите старую систему в режиме чтения до полного тестирования
Небольшой глоссарий
- Snapshot: снимок состояния данных в момент времени
- Delta-transfer: передача изменённых частей файла
- Chroot: ограничение окружения процесса в корне файловой системы

Итог и рекомендации
- Начните с простого: протестируйте
rsync -av --dry-runлокально - Настройте SSH-ключи и автоматизируйте с помощью systemd или cron
- Защитите резервные копии с помощью шифрования и политик хранения
- Тестируйте восстановление регулярно и документируйте процесс
Внедрение rsync в процессы резервного копирования даёт высокую гибкость при невысокой сложности. Следуйте контрольным спискам и автоматизируйте проверку целостности, чтобы резервные копии действительно спасали данные в кризисной ситуации.
SUMMARY
- Ключевые команды и шаблоны скриптов приведены выше
- Используйте
--backupи--link-destдля безопасной истории изменений - Подумайте о смене инструмента, если нужны дедупликация и встроенное шифрование
RELATED: Best Linux Laptops for Developers and Enthusiasts
Похожие материалы
Скрыть или заблокировать Wi‑Fi в Windows
Уведомления Nest при поломке котла или кондиционера
Зачёркивание в Google Docs — включить и убрать
Исправление проблем с шрифтами в Windows 10
Браузер по умолчанию для ссылок Outlook