Запуск rsync в режиме демона
Nov 26, 2015 15:51 · 516 words · 3 minute read
Утилита rsync
используется для синхронизации файлов и позволяет значительно сократить использование траффика за счет инкрементального копирования изменений.
Кроме синхронизации файлов и каталогов, данная утилита часто используется в схемах резервного копирования — давайте разберемся с запуском rsync
в режиме демона!
В данном примере с помощью утилиты rsync
будем копировать резервные копии с нескольких серверов в одно хранилище.
Прежде всего, на сервере-хранилище создаем (или редактируем, если такой файл уже есть) конфигурационный файл /etc/rsyncd.conf
:
touch /etc/rsyncd.conf
Пример содержимого файла следующий:
uid = admin
gid = root
max connections = 50
pid file = /var/run/rsyncd.pid
[web1]
path = /backups/web1
comment = For backups from web1
read only = no
dont compress = *
hosts allow = 192.168.0.7
hosts deny = *
[web2]
path = /backups/web2
comment = For backups from web2
read only = no
dont compress = *
hosts allow = 192.168.0.5
hosts deny = *
[db1]
path = /backups/db1
comment = For backups from db1
read only = no
dont compress = *
hosts allow = 192.168.0.6
hosts deny = *
[db2]
path = /backups/db2
comment = For backups from db2
read only = no
dont compress = *
hosts allow = 192.168.0.9
hosts deny = *
В данном примере параметры можно разделить на глобальные (общие для всех) и локальные (параметры для каждого модуля). К глобальным параметрам относятся:
uid
— имя илиid
пользователя, от которого происходят прием и передача файлов;gid
— имя илиid
группы, от которой происходят прием и передача файлов;max connections
— максимальное количество одновременных подключений;pid file
— файл, с котором хранится идентификатор процесса (pid).
Модуль создается при указании его имени в квадратных скобках, в нашем примере созданы модули [web1], [web2], [db1] и [db2]. Для каждого модуля были указаны следующие параметры:
path
— директория сервера, доступная утилите rsync по имени модуля;comment
— строка описания модуля;read only
— могут клиенты загружать файлы на сервер или нет;dont compress
— шаблон имен файлов, которые не должны сжиматься при передаче (сжатие ресурсозатратная операция, к тому же наши резервные копии будут уже сжаты);hosts allow
— шаблон доменных имен и ip-адресов, с которых разрешен доступ к серверу;hosts deny
— шаблон доменных имен и ip-адресов, с которых запрещен доступ к серверу.
Примечание. Для более безопасного использования утилиты можно с помощью параметра secrets file
указать путь к файлу, в котором хранятся пары вида username:password
для аутентификации подключений к модулю.
Создадим необходимые каталоги:
mkdir /backups/web1
mkdir /backups/web2
mkdir /backups/db1
mkdir /backups/db2
В конфигурационном файле /etc/default/rsync
установим параметр RSYNC_ENABLE
в:
RSYNC_ENABLE=true
После этого запускаем rsync
в режиме демона командой:
/etc/init.d/rsync start
Примечание. По умолчанию, rsync
-демон для клиентских подключений использует порт 873.
Теперь для копирования в хранилище резервных копий с сервера web1, на сервере достаточно запустить команду:
rsync -a --bwlimit=3000 /var/backup/ storage.com.ua::web1
Резервные копии, которые находятся в каталоге /var/backup/
на сервере web1 будут скопированы на сервер storage.com.ua, в каталог /backups/web1
(именно этот каталог доступен по имени модуля web1) с ограничением скорости 24 Mbps.
Примечание. Параметр --bwlimit
позволяет задать скорость передачи в килобайтах за секунду, 3000 kB/s = 24 Mbps
Далее на каждом сервере эту команду следует добавить отдельным заданием в cron
или дописать в скрипт, выполняющий резервное копирование.