Saturday, 7 August 2010

Установка Rsync сервера на Debian 6 Squeeze Linux через init.d

Ставим rsync:
apt-get install -y rsync


Если есть желание составить конфиг самому, то вот пример:
vi /usr/share/doc/rsync/examples/rsyncd.conf


В противном случае, создаем файл конфига:
vi /etc/rsyncd.conf


И вносим туда следующие строки:
# Global config
# pid file=/var/run/rsyncd.pid

[filearchive]
comment = Rsync file storage
path = /var/www/rsync
use chroot = yes
lock file = /var/lock/rsyncd
read only = yes
list = yes
uid = nobody
gid = nogroup
strict modes = yes
ignore errors = no
timeout = 600
transfer logging = yes
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz


filearchive представляет собой один из ресурсов, который будет доступен по протоколу rsync, это своего рода виртуальная папка, список доступных ресурсов можно просмотреть при подключении к rsync серверу.

Теперь создаем папку для хранения файлов, которые будем раздавать по rsync протоколу:
mkdir /var/www/rsync


Ради примера зальем туда небольшой tar.gz архив:
wget -P /var/www/rsync http://download.openvz.org/template/precreated/debian-6.0-x86_64.tar.gz

Настройка через /etc/init.d (рекомендуется)

Открываем конфиг:
vim /etc/default/rsync

Корректируем там:
RSYNC_ENABLE=false

Запускаем:
/etc/init.d/rsync start


Убеждаемся, что запустились:
ps aux |grep rsync
root 19542 0.0 0.0 2168 836 ? S 02:27 0:00 /usr/bin/rsync --no-detach --daemon --config /etc/rsyncd.conf
root 19553 0.0 0.0 1780 584 pts/0 S+ 02:27 0:00 grep rsync

Не стоит пугаться тому, что rsync работает от имени рута, при подключении клиентов они форкаются с заданными правами (nobody 20248):
ps aux|grep rsy
root 11901 0.5 0.0 35512 1864 ? Sl Mar29 2:17 /usr/sbin/rsyslogd -c4
root 19989 0.0 0.0 2168 832 ? S 02:37 0:00 /usr/bin/rsync --no-detach --daemon --config /etc/rsyncd.conf
nobody 20248 4.4 0.0 3576 1900 ? S 02:42 0:00 /usr/bin/rsync --no-detach --daemon --config /etc/rsyncd.conf
root 20256 0.0 0.0 1780 584 pts/0 S+ 02:42 0:00 grep rsy

Проверяем, слушается ли порт:
netstat -lnpt |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 19608/rsync
tcp6 0 0 :::873 :::* LISTEN 19608/rsync

Настройка через inet.d (не рекомендуется)

Ставим inetd демон:
apt-get install -y openbsd-inetd


Добавляем rsync в конфиг inetd (результат работы команды можно наблюдать в /etc/inetd.conf):
update-inetd --add 'rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon'


Перезапускаем inetd:
/etc/init.d/openbsd-inetd restart


Убеждаемся, что все хорошо и что inetd слушает 873й порт (порт rsync):
netstat -lnpt | grep inetd
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 11880/inetd

Тестирование


Теперь с удаленной машины либо локально делаем запрос листинга "хранилищ" rsync:
rsync localhost::
filearchive Rsync file storage


Это означает, что все хорошо и мы получили список, состоящий из нашего единственного ресурса.

Попробуем теперь получить список файлов ресурса filearchive:
rsync xx.xx.xx.xx::filearchive
drwxr-xr-x 4096 2010/08/08 03:54:38 .
-rw-r--r-- 140180113 2010/07/10 07:59:47 debian-5.0-x86_64.tar.gz


И, наконец, попробуем выполнить синхронизацию файла с удаленного ресурса filearchive с локальной папкой:

mkdir /root/archivecopy
rsync --progress xx.xx.xx.xx::filearchive/debian-5.0-x86_64.tar.gz /root/archivecopy


В результате получим файл в требуемой папке:

ls -la /root/archivecopy
total 134M
drwxr-xr-x 2 root root 4.0K 2010-08-08 04:02 .
drwxr-xr-x 16 root root 4.0K 2010-08-08 03:58 ..
-rw-r--r-- 1 root root 134M 2010-08-08 04:02 debian-5.0-x86_64.tar.gz


Но это еще не все! Если повторить предыдущую команду еще раз, то файл не будет скачен повторно, так как rsync выясняет, что файл не был изменен и его не нужно переливать повторно:
140180113 100% 116.55MB/s 0:00:01 (xfer#1, to-check=0/1)

sent 82988 bytes received 47504 bytes 52196.80 bytes/sec
total size is 140180113 speedup is 1074.24


Также можно выгрузить ресурс целиком:
rm -rf /root/archivecopy
mkdir /root/archivecopy
rsync -av xx.xx.xx.xx::filearchive /root/archivecopy


Вот результат:
ls -la /root/archivecopy
total 134M
drwxr-xr-x 2 root root 4.0K 2010-08-08 03:54 .
drwxr-xr-x 16 root root 4.0K 2010-08-08 04:09 ..
-rw-r--r-- 1 root root 134M 2010-07-10 07:59 debian-5.0-x86_64.tar.gz


Но тут надо быть аккуратнее, так как rsync может за компанию изменит права и самой папке /root/archivecopy, тут я не уверен в его поведении.

http://www.togaware.com/linux/survivor/Rsync_Server.html

No comments:

Post a Comment

Note: only a member of this blog may post a comment.