Настройка RSYNC для точной синхронизации данных
Потребовалось синхронизировать данные на 2 машинах под управлением Red Hat 3. Для выполнения данной задачи использовалась утилита rsync. Ее основные характеристики:
$-a – архивный режим (включает рекурсивное копирование и сохранение прав и владельца) $-t, --times – обновлять время модификации файла на приёмной стороне. При отсутствии этой опции или -a становиться неэффективной оптимизация передачи по времени изменения файлов $-c, --checksum – использование сверки по контрольным суммам, а не по времени изменения и размеру $--size-only – проверка только по размеру файлов $-r – рекурсивный режим (копирование всех подпапок и файлов в них) $-v – подробные вывод операций $-z – компрессия данных при передачи $-p – сохранять права $--del – удалить файлы в папке назначения которых нет в источнике (точная копия) $-R – использовать относительные пути при создании символических ссылок $--numeric-ids – не транслировать имена владельца и группы в цифровые UID и GID, оставить на удалённой стороне номера как есть $--size-only – использование для сверки только размер файлов $--bwlimit=KBPS – ограничение пропускной способности, чтобы не забивать канал (Kbit/s) $--ignore-errors – продолжать копирование и удаление после появления ошибок $--delete - удалять файлы со стороны получателя, если их нет на отправителе(ТОЧНАЯ КОПИЯ)
Кроме того, передачу данных можно туннелировать через ssh, в нашем случае шифрование данных при передаче не требовалось. Для более подробной информации об утилите выполните
man rsync
Ниже перечислен порядок действий.
1. Устанавливаем rsync на обеих машинах:
yum install rsync
2. На машине-отправителе редактируем файл /etc/xinetd.d/rsync:
service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
3. Перезапустим xinetd:
service xinetd restart
4. Изменим /etc/rsyncd.conf:
# Common pid file = /var/run/rsyncd.pid max connections = 5 # Security use chroot = yes uid = nobody gid = nobody hosts allow = 192.168.1.1 hosts deny = * # Logging log file = /var/log/rsync.log transfer logging = yes log format = %t %a %m %f %b syslog facility = local3 timeout = 300 # Shares [ftp] path=/var/ftp/pub comment=server's ftp
5. При необходимости, откроем на фаерволле машины-отправителя порт 873(rsync по умолчанию)
6. Протестируем:
# rsync rsync://127.0.0.1/ ftp servers's ftp
7. Далее, отредактируем /etc/rsyncd.conf в соответствии с указанным в п.4 образцом:.
Получилось вот так:
# Common pid file = /var/run/rsyncd.pid max connections = 5 # Security #use chroot = yes uid=myuser gid=mygroup hosts allow = 192.168.0.14 hosts deny = * # Logging log file = /var/log/rsync.log transfer logging = yes log format = %t %a %m %f %b syslog facility = local3 timeout = 300 # Shares [test] path=/home/myuser/test/ comment=test [htdocs] path=/usr/local/apache/htdocs/ comment=htdocs data [data] path=/home/myuser/data/ comment=data
8. На машине-получателе настраиваем скрипт запуска rsync по крону:
#!/bin/bash #Copying of /home/myuser/data/ rsync -avz --delete 192.168.0.11::data /home/myuser/data/ #Copyint htdocs #rsync -avz --delete 192.168.0.11::htdocs /usr/local/apache/htdocs/