UMGUM.COM (лучше) 

RSync ( Синхронизируем список "торрент"-файлов на всех серверах распространения. )

2 сентября 2010  (обновлено 31 января 2015)

OS: Debian Lenny.

Итак, мы имеем настроенный и функционирующий серверный узел первичного распространения "торрент"-файлов и контента как такового. Отдавать "торрент"-файлы по требованию вспомогательных узлов раздачи контента будем с помощью утилиты "rsync".

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


Инсталлируем rsync:

# aptitude install rsync

Разрешим стартовому скрипту "/etc/init.d/rsync" запускать сервис rsyncd и зададим параметры запуска путём следующих директив в файле "/etc/default/rsync":

....
RSYNC_ENABLE=true
....
RSYNC_CONFIG_FILE=/etc/rsyncd.conf
....
RSYNC_OPTS=' --ipv4 --address=0.0.0.0 --port=8730'

В конфигурационном файле выше мы привязали сервис rsyncd к определённому IP адресу и порту. Учитывая то, что распространяем мы открытую информацию, нет необходимости применять какие либо методы авторизации при обращении к контенту.

Создаем конфигурационный файл сервиса rsyncd в месте, положенном ему сборщиками пакета:

# touch /etc/rsyncd.conf

Приведем конфигурационный файл к следующему виду, базовой конфигурации:

log file = /var/log/rsyncd
pid file=/var/run/rsyncd.pid

# Указываем сервису на каком IP ему разрешено принимать запросы на подключение (это уже указано в опциях запуска сервиса, но лишний раз не помешает)
address = 0.0.0.0

# Указываем серверу не открывать более десяти соединений с клиентами единомоментно
max connections = 10

# Указываем не сжимать трафик для любых объектов
dont compress = *

# Указываем имя и группу пользователя, от имени которого rsync будет обращаться к запрашиваемым объектам
uid = share-operator
gid = share-users

# Разрешаем доступ исключительно для чтения данных с первичного сервера
read only = yes

# Разрешаем выдавать список модулей
list = yes

use chroot = no
lock file = /var/lock/rsyncd
timeout = 600

# Описываем модули, эмулирущие корни файловой системы запрашиваемых объектов
[torrents]
    path = /var/lib/share/torrents
    transfer logging = yes
    log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.

Запускаем rsyncd:

# /etc/init.d/rsync start

Проверяем, то ли и там ли прослушивает наш сервис:

# netstat -apn | grep rsync

Наблюдаем вывод:

tcp    0    0 0.0.0.0:8730    0.0.0.0:*    LISTEN    16841/rsync

Всё, "rsync" готов выдавать содержимое директории "/var/lib/share/torrents" любому по первому требованию, чего мы и добивались.


Заметки и комментарии к публикации:


Оставьте свой комментарий ( выразите мнение относительно публикации, поделитесь дополнительными сведениями или укажите на ошибку )