Rsync – это мощная утилита командной строки, которая используется для синхронизации файлов между двумя системами, будь то локальные машины или удалённые сервера. Она особенно полезна для задач резервного копирования и поддержания одинакового состояния нескольких узлов в кластере. В этой статье мы рассмотрим, как установить, настроить и использовать Rsync Server, а также разберём ключевые аспекты работы с ним.
Что такое Rsync?
Rsync (Remote Sync) – это инструмент для передачи файлов и директорий между компьютерами через сеть. Он отличается от других подобных инструментов тем, что использует дельта-кодирование, которое позволяет передавать только изменившиеся части файла вместо полной копии. Это значительно сокращает нагрузку на сеть и ускоряет процесс синхронизации.
Основные преимущества rsync:
- Эффективность передачи данных благодаря дельта-сжатию.
- Поддержка инкрементальных обновлений.
- Возможность работы по протоколу SSH для обеспечения безопасности.
- Простота использования.
Отличие резервных копий от архива
Важно понимать разницу между резервными копиями и архивами. Резервная копия представляет собой точную копию исходных данных на определённый момент времени. При этом, если вы случайно удалили важные файлы на одном устройстве, они будут удалены и на другой стороне при следующей синхронизации. Поэтому, помимо создания резервных копий, рекомендуется также настраивать архивирование данных, чтобы иметь возможность восстановить удалённые файлы позже.
Установка и настройка Rsync Server
Шаг 1: Установка Rsync
Для начала необходимо убедиться, что пакет rsync
установлен на вашей системе. Рассмотрим установку на популярных дистрибутивах Linux: CentOS и Ubuntu.
Установка на Rocky:
sudo dnf install rsync-daemon
Установка на Ubuntu:
sudo apt-get update && sudo apt-get install rsync
После установки пакета можно приступать к настройке сервера.
Шаг 2: Создание конфигурационного файла
Конфигурационный файл Rsync определяет параметры работы сервера. Создадим файл /etc/rsyncd.conf
.
Пример содержимого этого файла:
uid = nobody
gid = nobody
use chroot = no
max connections = 4
log file = /var/log/rsync.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
[backup]
path = /home/user/backups/
comment = Backup Directory
read only = false
list = yes
auth users = user1,user2
secrets file = /etc/rsyncd.secrets
Разберем ключевые параметры:
uid
иgid
: определяют пользователя и группу, под которыми будет работать демон.use chroot
: запрещаем или разрешаем изменение корневой директории.max connections
: максимальное количество одновременных соединений.log file
,pid file
,lock file
: пути к файлам логов, PID и блокировки соответственно.[backup]
: секция описывает конкретный модуль, который будет доступен клиентам.path
: путь к директорию, которую нужно синхронизировать.comment
: комментарий для модуля.read only
: определяет права доступа к модулю.list
: разрешает или запрещает просмотр списка модулей.auth users
: список пользователей, которым разрешено подключаться к этому модулю.secrets file
: путь к файлу паролей.
Шаг 3: Создание файла паролей
Для защиты доступа к серверу создадим файл /etc/rsyncd.secrets
. Этот файл содержит пары логин-пароль для авторизации клиентов.
Пример содержимого файла:
user1:password1
user2:password2
Убедитесь, что у файла правильные разрешения:
chmod 600 /etc/rsyncd.secrets
Шаг 4: Запуск демона Rsync
Теперь запустим Rsync-демон:
rsync --daemon --config=/etc/rsyncd.conf
Этот параметр запускает демон с использованием созданного ранее конфигурационного файла.
Настройка клиента
Чтобы начать синхронизацию с клиентом, вам потребуется установить пакет rsync
на клиентской машине. После этого можно начинать взаимодействие с сервером.
Подключение к серверу
Подключиться к Rsync-серверу можно следующим образом:
rsync -avz user@server:/path/to/source /local/path
Где:
-a
: рекурсивный режим с сохранением прав доступа и метаданных.-v
: подробный вывод информации о процессе.-z
: сжатие передаваемых данных.user@server
: имя пользователя и адрес сервера./path/to/source
: путь к источнику на сервере./local/path
: путь к целевой папке на локальной машине.
Использование ключей аутентификации
Для повышения безопасности можно использовать ключи SSH для подключения к серверу без необходимости ввода пароля каждый раз.
Создайте пару ключей на клиентской машине:
ssh-keygen -t rsa
Затем скопируйте публичный ключ на сервер:
ssh-copy-id user@server
Теперь подключение к серверу будет происходить автоматически без запроса пароля.
Примеры использования Rsync
Синхронизация каталога с удалённым сервером
Предположим, вам нужно синхронизировать локальный каталог /home/user/data
с удалённой директорией /home/user/remote_data
на сервере example.com
.
rsync -avz /home/user/data user@example.com:/home/user/remote_data
Синхронизация с исключением некоторых файлов
Иногда требуется исключить некоторые типы файлов или целые директории из процесса синхронизации. Например, чтобы исключить все файлы с расширением .tmp
и директорию cache
, выполните следующую команду:
rsync -avz --exclude="*.tmp" --exclude=cache /home/user/data user@example.com:/home/user/remote_data
Инкрементальное резервное копирование
Инкрементальная резервная копия сохраняет только изменения, произошедшие с момента последнего бэкапа. Это экономит пространство и время.
rsync -auvzP --link-dest=$HOME/backup/prev_backup $HOME/data $HOME/backup/current_backup
Здесь:
--link-dest
: указывает на предыдущую версию бэкапа, создавая жёсткие ссылки на неизменённые файлы.$HOME/backup/prev_backup
: предыдущий бэкап.$HOME/data
: источник данных.$HOME/backup/current_backup
: текущая версия бэкапа.
Заключение
Rsync является мощным инструментом для синхронизации файлов и каталогов между машинами. Его гибкость и возможности делают его незаменимым для решения различных задач, связанных с резервным копированием и поддержанием консистентности данных. Следуя приведенным инструкциям, вы сможете легко настроить и использовать Rsync Server для своих нужд.