Синхронизация файлов с помощью rsync (Debian)
rsync (англ. Remote Synchronization) — программа для UNIX-подобных систем, которая выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодировку данных при необходимости. Важным отличием rsync от многих других программ/протоколов является то, что зеркалирование осуществляется одним потоком в каждом направлении (а не по одному или несколько потоков на каждый файл). rsync может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию.
На компьютере с которого мы будем синхронизировать ФС, ставим и настраиваем rsync сервер, на клиенте настраиваем rsync клиент.
На сервере и клиенте устанавливаем пакет rsync.
apt-get install rsync
Создаём файл rsyncd.conf в дирректории /etc
# Файл приветствия 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
Создаем необходимые файлы и директории
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
Создадим файл для автоматического запуска rsync ( /etc/rc2.d/S99rsync )
#!/bin/sh /usr/bin/rsync --daemon
А также необходимо запустить rsync
/usr/bin/rsync --daemon
Проверим на стороне клиента работу rsync
root@myhost:~# rsync backup@192.168.0.1::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
Все конечно хорошо, но если запускать копирование по крону, то как вводить пароль? Для этого можно
указать password-file:
root@myhost:~# touch /etc/rsync.pwdroot@myhost:~# chmod 600 /etc/rsync.pwdroot@myhost:~# echo "1234" > /etc/rsync.pwdroot@myhost:~# rsync --password-file=/etc/rsync.pwd backup@192.168.0.1::datadrwxr-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
Для автоматической синхронизации необходимо указать:
rsync --password-file=/etc/rsync.pwd --update --recursive backup@192.168.0.1::data /var/cache/svn
