Настройка rsync-сервера и использование rsync-клиента

Интересная заметка, которая по каким-то причинам до сих пор не попала в блог. В примере настройки rsync-сервера приводится реальный файл конфигурации зеркала репозиториев Debian, который я в прошлом на общественных началах держал для пользователей Уфанета. Потом Уфанет поднял собственное зеркало репозиториев, да и появились дешёвые безлимитные тарифы, поэтому моё зеркало потеряло смысл.

1. Настройка rsync-сервера

Для настройки rsync-сервера нужно установить пакет rsync:

# apt-get install rsync

Затем, прописать опции командной строки, с которыми будет запускаться rsync-сервер в файл /etc/default/rsync. В данном файле можно задать следующие опции:

Создать файл конфигурации rsync-сервера /etc/rsync.conf:

uid = rsyncd
gid = mirror
max connections = 50
read only = yes
list = yes
syslog facility = local5
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.mp3
use chroot = yes
outgoing chmod = Fu=rw,g=rw,o=,Du=rwx,g=rx,o=

[debian]
        path = /home/mirror/debian/
        comment = Debian Lenny i386 and amd64 repository

[debian-cd]
        path = /home/mirror/debian-cd/
        comment = Debian Lenny i386 and amd64 DVD images

Описание указанных опций:

В квадратных скобках задаётся имя секции. Каждая секция обязана иметь собственный параметр path. Дополнительно в ней могут быть переопределены значения глобальных опций.

После изменения опций, если ваш rsync-сервер будет работать в самостоятельном режиме, нужно перезапустить его:

# /etc/init.d/rsync restart

2. Использование rsync-клиента

Для установки rsync-клиента нужно установить пакет rsync:

# apt-get install rsync

Чтобы начать копирование с rsync-сервера, можно воспользоваться подобной командой:

$ rsync -avv rsync://anonymous@mirror.yandex.ru:873/debian/ debian/

Или проще:

$ rsync -avv rsync://mirror.yandex.ru/debian/ debian/

rsync-клиент может работать не только с rsync-сервером, он может работать и через ssh-подключение с теми машинами, где установлен rsync:

$ rsync -avv user@computer:/home/mirror/debian/ debian/

При этом он по сравнению с командой scp будет иметь следующие преимущества:

Также rsync можно использовать для копирования локальных файлов:

$ rsync -avv /home/mirror/debian/ debian/

По сравнению с командой cp будет иметь следующие преимущества:

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

При синхронизации на Samba-ресурс или файловую систему FAT может случиться, что копируются не только изменённые файлы, а половина всех файлов плюс изменившиеся. Это связано с тем, что в файловой системе FAT исторически под хранение секунд отводилось лишь 5 бит. В 5 битах можно хранить не более 32 разных значений, поэтому секунды хранятся с округлением до чётного значения. Из-за этого rsync может решить, что файл изменился, хотя разница между отметками времени двух файлов составляет 1 секунду. Чтобы rsync не обращал внимание на разницу в одну секунду, следует указать ему дополнительную опцию --modify-window=1:

$ rsync -avv --modify-window=1 /home/fileserv1/ /home/fileserv2/

За более подробной информацией по программе rsync можно обратиться к системным страницам руководства rsync(1) и rsync.dconf(5) или к их переводам на русский язык rsync(1) и rsyncd.conf(5).

Написать автору