Гид по технологиям

Как использовать rsync для резервного копирования данных в Linux

9 min read Linux Обновлено 03 Dec 2025
Как использовать rsync для резервного копирования в Linux
Как использовать rsync для резервного копирования в Linux

Быстрые ссылки

  • Использование rsync для локальных резервных копий
  • Использование 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, показывающий обновление и копирование файлов

Пояснение: в примере rsync обнаружил новые или изменённые файлы и скопировал их в целевую директорию. Всегда используйте -v при первом тестировании и --dry-run перед включением автоматизации.

Защита от случайных удалений и политики версий

Использование --delete опасно, если нет стратегии восстановления. Вот варианты, как смягчить риск:

  1. Использовать --backup и --backup-dir чтобы сохранять удалённые или перезаписанные файлы в отдельную директорию
rsync -av --delete --backup --backup-dir=/backups/old/$(date +%F) /Directory1/ /Directory2/
  1. Использовать --suffix чтобы пометить резервные копии
rsync -av --backup --suffix=.bak /Directory1/ /Directory2/
  1. Инкрементные снимки с --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/

Скриншот сетевого резервного копирования rsync через SSH

Автоматизация аутентификации — ключ к регулярным задачам. Настройка 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/

Тестирование и критерии приёмки

Критерии приёмки резервного процесса:

  • Резервные задачи выполняются по расписанию без ошибок в течение двух недель
  • Тестовое восстановление ключевого набора файлов прошло успешно и прошло проверку хэшей
  • Приватные ключи и доступы защищены и задокументированы
  • Период хранения и ротация архивов соответствуют политике

Минимальные тесты и проверки

  1. Запуск --dry-run и проверка списка изменений
  2. Восстановление отдельного файла и проверка контрольной суммы
  3. Проверка логов Cron/systemd на отсутствие ошибок

Пример простых тест-кейсов

  • TC01: Выполнить rsync -av --dry-run и подтвердить отсутствие неожиданных удалений
  • TC02: Выполнить полный перенос 1 ГБ данных и восстановить 5 файлов
  • TC03: Откат к резервной копии, созданной 7 дней назад, и верификация метаданных

Восстановление данных — сценарии

  1. Восстановление одного файла из зеркала
rsync -av geek@remote:/Directory2/path/to/file.txt /restore/location/
  1. Восстановление директории из снимка с --link-dest
rsync -av /backups/day-7/ /restore/location/
  1. Восстановление после случайного удаления: используйте --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)

Короткая инструкция по миграции с другого решения

  1. Синхронизируйте текущие данные в режимах dry-run и затем в реальном времени
  2. Проверьте восстановление из нового хранилища
  3. Параллельно держите старую систему в режиме чтения до полного тестирования

Небольшой глоссарий

  • Snapshot: снимок состояния данных в момент времени
  • Delta-transfer: передача изменённых частей файла
  • Chroot: ограничение окружения процесса в корне файловой системы

Иллюстрация архивации и синхронизации файлов

Итог и рекомендации

  • Начните с простого: протестируйте rsync -av --dry-run локально
  • Настройте SSH-ключи и автоматизируйте с помощью systemd или cron
  • Защитите резервные копии с помощью шифрования и политик хранения
  • Тестируйте восстановление регулярно и документируйте процесс

Внедрение rsync в процессы резервного копирования даёт высокую гибкость при невысокой сложности. Следуйте контрольным спискам и автоматизируйте проверку целостности, чтобы резервные копии действительно спасали данные в кризисной ситуации.


SUMMARY

  • Ключевые команды и шаблоны скриптов приведены выше
  • Используйте --backup и --link-dest для безопасной истории изменений
  • Подумайте о смене инструмента, если нужны дедупликация и встроенное шифрование

RELATED: Best Linux Laptops for Developers and Enthusiasts

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Скрыть или заблокировать Wi‑Fi в Windows
Техподдержка

Скрыть или заблокировать Wi‑Fi в Windows

Уведомления Nest при поломке котла или кондиционера
Умный дом

Уведомления Nest при поломке котла или кондиционера

Зачёркивание в Google Docs — включить и убрать
Руководство

Зачёркивание в Google Docs — включить и убрать

Исправление проблем с шрифтами в Windows 10
Windows

Исправление проблем с шрифтами в Windows 10

Браузер по умолчанию для ссылок Outlook
Outlook

Браузер по умолчанию для ссылок Outlook

Как разделять армии в Age of Wonders: Planetfall
Стратегия

Как разделять армии в Age of Wonders: Planetfall