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.