17 июл. 2014 г.

Настройка rsync для репликации между двумя windows серверами (без использования cwRsync)

Чтобы настроить репликацию между двумя серверами windows, используя rsync нужно сначала установить cygwin. В сети есть различные варианты урезанной установки, т.е. только rsync + dll для того, чтобы она запустилась, но я не стал заморачиваться и поставил базовую систему cygwin и дополнительно rsync, ssh, openssl - из комплекта cygwin. Устанавливал из Интернета. Зато теперь у меня полно всяких unix-утилит, от bash и sed до perl. Мегабайт на 200.

Устанавливаем систему на оба сервера. Тот, что будет являться источником информации, будет запускать rsync в режиме демона. Тот, который будет забирать файлы - будет запускать свою rsync из планировщика.

На источнике с помощью vi ;-) создаем /etc/rsyncd.conf
use chroot=false
strict modes=false
uid=%RSYNC_USER_NAME%
gid=*
hosts allow = 192.168.0.1
transfer logging=yes
log format=%h %o %f %l %b
log flie=/var/log/rsync.log
motd file=/etc/rsync.motd

[Section]
path=/cygdrive/c/Новая папка/
transfer logging=yes

Можно использовать пробелы и русские буквы - текущая версия cygwin это позволяет, она в UTF-8. Но файл нужно создавать vi, тогда все ок. По поводу пробелов много обсуждения в сети. Резюме - все работает, только в конце не забываем слэш. Кавычек ни одинарных, ни двойных не нужно. А вот конечные пробелы удаляются.

Потом на источнике запускаем команду, которая вставляет запуск rsync в сервисы.
cygrunsrv --install "rsyncd" --path /usr/bin/rsync --args "--daemon --no-detach" \
--desc "Starts a rsync daemon for accepting incoming rsync connections" --disp "Rsync Daemon" --type auto

Ну, на получателе информации запускаем нечто вроде:
rsync --verbose --delete --progress -a --bwlimit=50K 192.168.0.100::Section "/cygdrive/c/Data/Куда сохранять/"


Вот тут кавычки нужны, двойные.

Ну и отдельная песня, как это запустить из планировщика. У меня получилось через cmd, запускающего bash c параметрами.
По-хорошему, нужно установить еще и cron, т.к. он удобнее и гибче и может запускать rsync нативно.