# Создание резервных копий при помощи Rsync
Создание резервных копий — один из самых важных пунктов в любой работе, связанной с веб-разработкой, администрированием или поддержанием работоспособности веб-проектов.
Для создания резервных копий существует очень много инструментов — от встроенных системных утилит и приложений до предлагаемых хостинговыми компаниями сервисов.
В этой статье мы рассмотрим работу одной из устанавливаемых утилит — Rsync. Она довольно просто настраивается, а синтаксис её команд интуитивно понятен и не вызывает вопросов в большинстве случаев.
Для начала работы нам понадобится только подготовленный к работе сервер на одной из операционных систем — Ubuntu или CentOS. Синтаксис команд не различается для разных операционных систем — отличаться будут только способы установки.
# Установка и запуск Rsync
Устанавливать Rsync будем с помощью стандартных пакетных приложений, поэтому синтаксис команд будет стандартным:
# Ubuntu
sudo apt install rsync
#CentOS
sudo dnf install rsync rsync-daemon
В случае с CentOS установку после этого можно считать законченной — Rsync не потребует никакой дополнительной настройки, кроме активации:
sudo systemctl enable rsync
Для Ubuntu же потребуется дополнительно изменить конфигурационный файл Rsync:
sudo vim etc/default/rsync
Здесь найдём строчку RSYNC_ENABLE=
и укажем в ней значение true
. После этого создадим пустой конфигурационный файл — его можно будет заполнить позже, но без него программа не заработает:
sudo vim /etc/rsyncd.conf
Теперь программу также можно запускать:
sudo systemctl enable rsync
Проверить активность rsync можно стандартной командой:
sudo systemctl status rsync
Также можно посмотреть список прослушиваемых портов:
sudo netstat -tulpn
# Output
…
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 63555/rsync
tcp6 0 0 :::873 :::* LISTEN 63555/rsync
Как видим, rsync прослушивает строго определённый порт — 873.
Для правильной работы Rsync не забудьте добавить этот порт в список исключений фаервола, если он у вас запущен:
# Ubuntu
sudo ufw allow 873
# CentOS
sudo firewall-cmd --zone=name --add-port=873
Готово! Rsync установлен и готов к работе.
# Начало работы
Один из основных инструментов при работе с Rsync — командная строка. Команда rsync
с различными комбинациями флагов позволяет создавать разные версии резервных копий.
Например, вот самая простая команда:
sudo rsync -r direktory1/ direktory2
Она копирует всё содержимое папки direktory1
в direktory2
.
В команде есть флаг -a
:
sudo rsync -a direktory1/ direktory2
Файлы скопируются с полным сохранением всех зависимостей — символьных ссылок, свойств файлов, прав на них и т.д.
Важно отметить небольшую особенность синтаксиса. Слэш /
в конце первой директории означает, что сохраняться в бэкап будут только файлы. Вы можете не указать слэш в конце директории:
sudo rsync -r direktory1 direktory2
Тогда в бэкап будут добавлены не только файлы, но и сама папка, их содержащая. В данном случае структура бэкапа будет следующей: direktory2direktory1files.
# Создание резервных копий по SSH
Одна из интересных и полезных возможностей rsync — создание бэкапов по ssh. Вы можете самостоятельно создать резервные копии нужных данных, поместив их на свой удалённый сервер.
Для этого используется следующая команда:
sudo rsync -avz --progress --delete -e "ssh -p 2022" user@12.34.56.78/~/backup_data
Здесь:
--delete
— ключ, указывающий на удаление в хранилище тех файлов, которых нет в источнике. Обычно он используется для создания «зеркал» — точных копий источника.--progress
— директива, добавляющая к процессу копирования файлов прогресс-бар. Это может быть полезно при копировании большого числа файлов.ssh -p 2022
— указание на использование ssh-протокола для копирования файлов и номер порта для подключения.user@12.34.56.78
— имя пользователя и адрес хоста для подключения по ssh к серверу, на котором будет храниться наш бэкап./~/backup_data
— адрес директории, где будет храниться бэкап.
# Настройка исключений
При создании бэкапа можно создать список исключений — файлов, которые не будут сохраняться. Это можно сделать с помощью ключей --exclude
и --exclude-from
. В первом случае сразу после этого ключа указываются файлы, которые не нужно сохранять, например, --exclude *.png
. В случае с --exclude-from
после флага указывается адрес, в котором указан список исключений.
Различия в командах очевидны — первая используется, когда список исключений небольшой или когда нужно исключить только файлы определённого типа, вторая — при большом списке исключений.
В следующей инструкции мы расскажем, как автоматизировать создание бэкапов при помощи rsync — напишем скрипты и конфигурационые файлы для сервера-источника и сервера-хранилища, добавим наш скрипт в cron для регулярного выполнения задач.