system:настройка_rsync_для_точной_синхронизации_данных

Настройка 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/
  • system/настройка_rsync_для_точной_синхронизации_данных.txt
  • Последнее изменение: 2015/09/30 15:46
  • (внешнее изменение)