Синхронизация файлов с помощью rsync (Debian)

on January 8th, 2013 by Hades | 2 Comments »

rsync (англ. Remote Synchronization) — программа для UNIX-подобных систем, которая выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодировку данных при необходимости. Важным отличием rsync от многих других программ/протоколов является то, что зеркалирование осуществляется одним потоком в каждом направлении (а не по одному или несколько потоков на каждый файл). rsync может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию.

На компьютере с которого мы будем синхронизировать ФС, ставим и настраиваем rsync сервер, на клиенте настраиваем rsync клиент.

На сервере и клиенте устанавливаем пакет rsync.
[cc lang=”bash” width=”550″]
apt-get install rsync
[/cc]

Создаём файл rsyncd.conf в дирректории /etc
[cc lang=”bash” width=”550″]
# Файл приветствия
motd file = /etc/motd
# Лог файл
log file = /var/log/rsyncd.log
# Писать в лог о скачивание файлов
transfer logging = true
# Описание секции DATA
[data]
# Путь к директории
path = /var/cache/svn/
# Под каким uid’ом работать
uid = root
# Только чтение
read only = yes
# Разрешать просмотр файлов
list = yes
# Комментарий
comment = ETC directory
# Хосты, которым разрешен доступ
hosts allow = 192.168.0.5
# Разрешенные пользователи
auth users = backup
# Путь к файлу с паролями
secrets file = /etc/rsyncd.scrt
[/cc]

Создаем необходимые файлы и директории
[cc lang=”bash” width=”550″]
v-hades:~# touch /var/log/rsyncd.log
v-hades:~# chmod 0600 /var/log/rsyncd.log
v-hades:~# chown root:root /var/log/rsyncd.log
v-hades:~# cat > /etc/rsyncd.scrt
backup:1234
v-hades:~# chown root:root /etc/rsyncd.scrt
v-hades:~# chmod 600 /etc/rsyncd.scrt
[/cc]

Создадим файл для автоматического запуска rsync ( /etc/rc2.d/S99rsync )
[cc lang=”bash” width=”550″]
#!/bin/sh
/usr/bin/rsync –daemon
[/cc]

А также необходимо запустить rsync
[cc lang=”bash” width=”550″]
/usr/bin/rsync –daemon
[/cc]

Проверим на стороне клиента работу rsync
[cc lang=”bash” width=”550″]
[email protected]:~# rsync [email protected]::data

Password:
drwxr-xr-x 224 2008/03/28 09:50:01 .
-rw-rw-r– 229 2008/03/28 09:50:01 README.txt
-r–rw-r– 2 2008/03/28 09:50:01 format
drwxrwxr-x 128 2009/09/24 11:11:05 conf
drwxrwxr-x 48 2008/03/28 09:50:01 dav
drwxrwsr-x 256 2009/09/24 11:34:21 db
drwxrwxr-x 360 2008/03/28 09:50:01 hooks
drwxrwxr-x 104 2008/03/28 09:50:01 locks
[/cc]

Все конечно хорошо, но если запускать копирование по крону, то как вводить пароль? Для этого можно
указать password-file:
[cc lang=”bash” width=”550″]
touch /etc/rsync.pwd
chmod 600 /etc/rsync.pwd
echo “1234” > /etc/rsync.pwd
[/cc]

Проверим работу с сохраненным паролем
[cc lang=”bash” width=”550″]
[email protected]:~# rsync –password-file=/etc/rsync.pwd [email protected]::data
drwxr-xr-x 224 2008/03/28 09:50:01 .
-rw-rw-r– 229 2008/03/28 09:50:01 README.txt
-r–rw-r– 2 2008/03/28 09:50:01 format
drwxrwxr-x 128 2009/09/24 11:11:05 conf
drwxrwxr-x 48 2008/03/28 09:50:01 dav
drwxrwsr-x 256 2009/09/24 11:34:21 db
drwxrwxr-x 360 2008/03/28 09:50:01 hooks
drwxrwxr-x 104 2008/03/28 09:50:01 locks
[/cc]

Для автоматической синхронизации необходимо указать:
[cc lang=”bash” width=”550″]
rsync –password-file=/etc/rsync.pwd –update –recursive [email protected]::data /var/cache/svn
[/cc]