Skip to content

rsync-резервное копирование

1. Что такое rsync?

rsync — это мощная утилита командной строки для синхронизации и резервного копирования файлов и каталогов в Unix-подобных операционных системах (Linux, macOS и др.). Это один из самых популярных инструментов для создания локальных и удалённых резервных копий благодаря своей скорости, гибкости и эффективности.

Основные особенности:

  • Инкрементное копирование – копируются только изменённые части файлов.
  • Сжатие данных – уменьшает объём передаваемых данных.
  • Поддержка SSH – безопасная передача через шифрованные соединения.
  • Полная поддержка прав доступа, владельцев, временных меток и символьных ссылок.
  • Экономия пропускной способности – идеален для сетевых бэкапов.
  • Минимальное влияние на производительность системы.

2. Установка rsync

Для большинства Linux-дистрибутивов rsync установлен по умолчанию.

Если не установлен, установите:

Debian / Ubuntu:

sudo apt update && sudo apt install rsync

CentOS / RHEL:

sudo yum install rsync

или

sudo dnf install rsync

macOS:

Доступен по умолчанию. Если нужна более новая версия:

brew install rsync

3. Базовый синтаксис команды rsync

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

4. Примеры использования rsync для резервного копирования

4.1. Локальное резервное копирование каталога

rsync -av /home/user/documents/ /media/backup/documents/
  • -a — архивный режим (сохраняет права, символические ссылки, временные метки и т.п.)
  • -v — выводит информацию о ходе выполнения

4.2. Резервное копирование с удалённого сервера

rsync -avz user@remote:/var/www/html/ /backup/local_html/
  • -z — сжатие данных при передаче

4.3. Использование SSH для безопасного подключения

rsync -avz -e ssh user@remote:/etc/nginx/ /backup/nginx/
  • -e ssh — указывает использовать SSH для подключения
rsync -av --link-dest=/backup/latest/ /var/www/html/ /backup/$(date +%Y%m%d)/
  • --link-dest — создаёт жёсткие ссылки на неизменённые файлы, экономя место

Каждый новый бэкап будет содержать только изменения, но выглядеть как полный.


5. Полезные опции rsync

Опция Описание
-a Архивный режим (сохраняет все атрибуты)
-v Вывод информации о процессе
-r Рекурсивное копирование каталогов
-z Сжатие данных при передаче
-h Человекочитаемый вывод размеров файлов
--delete Удаляет файлы из места назначения, если они были удалены в источнике
--exclude=PATTERN Исключить файлы или папки по маске
--include=PATTERN Включить файлы или папки по маске
--log-file=FILE Записывает лог операции в файл
--backup Сохраняет старые версии изменённых файлов
--backup-dir Указывает каталог для хранения старых версий файлов

6. Настройка автоматического резервного копирования с помощью cron

Чтобы автоматизировать бэкапы, настройте задание в cron.

Шаг 1: Создайте скрипт резервного копирования

#!/bin/bash

SOURCE="/var/www/html/"
DEST="/backup/$(date +%Y%m%d)"
LOG="/var/log/rsync_backup.log"

rsync -av --link-dest=/backup/latest $SOURCE $DEST >> $LOG 2>&1

# Обновляем ссылку latest
rm -rf /backup/latest
ln -s $DEST /backup/latest

Сохраните как /usr/local/bin/backup.sh, сделайте исполняемым:

chmod +x /usr/local/bin/backup.sh

Шаг 2: Добавьте задание в crontab

crontab -e

Добавьте строку (например, ежедневно в 02:00):

0 2 * * * /usr/local/bin/backup.sh

7. Как проверить успешность резервного копирования?

Проверьте лог:

cat /var/log/rsync_backup.log

Проверьте структуру бэкапов:

ls -l /backup/

Выполните пробное восстановление:

cp -r /backup/latest/some_file /restore/

8. Безопасность при использовании rsync

Мера Описание
Шифрование Используйте SSH или монтируйте зашифрованный диск
Ограничение прав Запускайте rsync от пользователя с минимальными привилегиями
Целостность бэкапов Регулярно проверяйте возможность восстановления
Резервные копии бэкапов Храните хотя бы одну копию вне основного хранилища
Автоматизация с логами Отслеживайте ошибки и успехи в логах
Исключение временных файлов Не сохраняйте ненужные данные (/tmp, /cache)

9. Примеры сценариев резервного копирования

9.1. Резервное копирование сайта и базы данных

# Копируем файлы сайта
rsync -av /var/www/html/ /backup/site/

# Экспортируем базу данных
mysqldump -u root -p database_name > /backup/db/database_$(date +%Y%m%d).sql

# Архивируем всё вместе
tar -czf /backup/full_backup_$(date +%Y%m%d).tar.gz /backup/site/ /backup/db/

9.2. Резервное копирование пользовательских домашних каталогов

rsync -av /home/ /backup/home/

9.3. Резервное копирование конфигурационных файлов

rsync -av /etc/ /backup/etc/

10. Возможные проблемы и их решение

Проблема Причина Решение
Нет прав на запись Неправильные разрешения на целевой каталог Используйте sudo или измените права с помощью chown / chmod
Не хватает места Много дубликатов Используйте --link-dest
Ошибки при передаче по сети Плохое соединение Попробуйте повторить, используйте --partial
Потеря бэкапа при сбое Нет второго экземпляра Реализуйте 3-2-1 правило
Старые бэкапы не удаляются Нет политики хранения Настройте автоматическое удаление старых копий через cron

11. Альтернативы rsync

Инструмент Когда использовать
rdiff-backup Требуется история изменений
Bacula / Amanda Корпоративные решения
Duplicity Шифрованное резервное копирование в облако
Timeshift Простой GUI-инструмент для пользователей Linux
borgbackup Поддержка дедупликации и шифрования
tar + gzip/bzip2/xz Архивация без сложных зависимостей