Как установить и настроить Rsync

Wiki : Rsync (англ. Remote Synchronization) — программа для UNIX-подобных систем, которая выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодирование данных при необходимости. Важным отличием rsync от многих других программ/протоколов является то, что зеркалирование осуществляется одним потоком в каждом направлении (а не по одному или несколько потоков на каждый файл). rsync может копировать или отображать содержимое каталога и копировать файлы, опционально используя сжатие и рекурсию.

Rsync является общепризнанным программным обеспечением, которое работает надежно и быстро. Бэкапленд использует его для оптимального механизма создания резервных копий, а так же по причине его массовой распространенности на серверах, что означает, что вы сможете работать с нашей системой без каких-либо настроек на вашей стороне. Но из каждого правила существуют исключения, поэтому ниже мы предлагаем подробную инструкцию как установить и настроить Rsync на серверах с операционными системами Debian, Ubuntu, Centos и FreeBSD.



Как проверить установлен ли rsync
Как установить rsync
Для чего нужно настраивать rsync
Как настроить rsync для FreeBSD
Как настроить rsync для Linux Debian и Ubuntu
Как настроить rsync для Centos 6
Как настроить rsync для Centos 7
Описание полей файла конфигурации rsyncd.conf


Проверка:

Проверьте установлен ли rsync:

выполните команду в ssh: whereis rsync если ответом будет /usr/local/bin/rsync или /usr/bin/rsync то он у вас есть, вам его устанавливать не нужно.

Так же можете проверить, просто запустив команду в ssh: rsync или /usr/local/bin/rsync или /usr/bin/rsync если будет ответ, а не ошибка, тогда вам его устанавливать не нужно.


Установка:

Описанные далее установка и настройка rsync возможны, только если у вас есть права root. Если таких прав нет, напишите Вашему системному администратору или в техническую поддержку хостинга с просьбой установить rsync.

Для FreeBSD:cd /usr/ports/net/rsync
make install

Для Linux Debian и Ubuntu:apt-get install rsync
Для Centos:yum install -y rsync


Настройка:

Настраивать rsync нужно только в одном случае, если вы хотите чтобы наша система создавала резервные копии не через SSH, а через демон rsyncd.

Через файл конфигурации настройки rsyncd вы можете:

  • Задать своего пользователя и пароль
  • Разрешить вход к вам только с определенного IP/хоста (наш хост при заказе мы вам высылаем)
  • Разрешить доступ к конкретным директориям и файлам на вашей системе

Настройка rsync для FreeBSD:cd /usr/local/etc/
cоздаем файл приветствия (не обязательно)echo "Hello from rsync server" > rsyncd.motd
echo "Server Adress: My SuperHost 1.1.1.1" >> rsyncd.motd
создаем файл c именем пользователя и паролемecho "backup:ПАРОЛЬ" > rsyncd.scrt
chmod 0600 /usr/local/etc/rsyncd.scrt
,где ПАРОЛЬ тот, что мы выдаем вам при создании в панели управления задания на резервное копирование. В дальнейшем вы можете изменить пароль на свой в файле rsyncd.scrt и на сервере хранения резервных копий в файле /var/www/rc-******/data/rsyncd.pass, где rc-****** ваш логин на сервер с бэкапами.
Внимание! Если пароли на вашем сервере и сервере с бэкапами не совпадут, резервные копии создаваться не будут.

Далее создаем основной конфиг rsyncd.conf
  1. cd /usr/local/etc/
  2. mv rsyncd.conf rsync.original
  3. cat << EOF >> /usr/local/etc/rsyncd.conf
    pid file = /var/run/rsyncd.pid
    motd file = /usr/local/etc/rsyncd.motd

    uid = root
    gid = wheel
    max connection = 4

    auth users = backup
    secrets file = /usr/local/etc/rsyncd.scrt

    [root]
    path = /
    read only = yes
    host allow = ssh.bkp177.backupland.com
    EOF
  4. /usr/local/etc/rc.d/rsyncd restart

Теперь настраиваем так, чтобы после перезагрузки сервера у вас запускался демон rsyncd
  1. Делаем отступ с переносом на следующую строку echo "" >> /etc/rc.conf
  2. Добавлем разрешение запускать при старте echo 'rsyncd_enable="YES"' >> /etc/rc.conf

Настройка rsync для Linux Debian и Ubuntu:
Находите файл /etc/default/rsync
В нем находите строку:
RSYNC_ENABLE=false
и меняете на:
RSYNC_ENABLE=true
Таким образом мы разрешаем при загрузке сервера запустить демон rsyncd

Далее создадим папку для наших файлов:mkdir /etc/rsync/
cd /etc/rsync/
создаем файл приветствия (не обязательно)echo "Hello from rsync server" > rsyncd.motd
echo "Server Adress: My SuperHost 1.1.1.1" >> rsyncd.motd
создаем файл c именем пользователя и паролемecho "backup:ПАРОЛЬ" > rsyncd.scrt
chmod 0600 /etc/rsync/rsyncd.scrt
,где ПАРОЛЬ тот, что мы выдаем вам при создании в панели управления задания на резервное копирование. В дальнейшем вы можете изменить пароль на свой в файле rsyncd.scrt и на сервере хранения резервных копий в файле /var/www/rc-******/data/rsyncd.pass, где rc-****** ваш логин на сервер с бэкапами.
Внимание! Если пароли на вашем сервере и сервере с бэкапами не совпадут, резервные копии создаваться не будут.

Далее создаем основной конфиг rsyncd.conf
  1. cd /etc/ Обратите внимание на то, что файл rsyncd.conf должен быть расположен в папке /etc/
  2. mv rsyncd.conf rsyncd.old делаем так на всякий случай, вдруг файл такой уже есть
  3. cat << EOF >> /etc/rsyncd.conf
    pid file = /var/run/rsyncd.pid

    motd file = /etc/rsync/rsyncd.motd

    uid = root
    gid = root
    max connection = 4

    auth users = backup
    secrets file = /etc/rsync/rsyncd.scrt

    [root]
    path = /
    read only = yes
    host allow = ssh.bkp177.backupland.com
    EOF
  4. /etc/init.d/rsyncd restart

Настройка rsync для Centos 6: Устанавливаем xinetd (нужен для пуска rsync сервера): yum install -y xinetd Находите файл /etc/xinetd.d/rsync
В нем находите строку:
disable = yes
и меняете на:
disable = no

Перезагружаем сервис xinetd:/etc/init.d/xinetd restart Добавляем xinetd в автозапуск:chkconfig xinetd on Конфиг создаем такой же как и для Centos 7 (смотри ниже).

Настройка rsync для Centos 7:
Включаем в автозагрузкуsystemctl enable rsyncd.service Запускаем rsyncd демонsystemctl start rsyncd.service
Далее создадим папку для наших файлов:mkdir /etc/rsync/
cd /etc/rsync/
создаем файл приветствия (не обязательно)echo "Hello from rsync server" > rsyncd.motd
echo "Server Adress: My SuperHost 1.1.1.1" >> rsyncd.motd
создаем файл c именем пользователя и паролемecho "backup:ПАРОЛЬ" > rsyncd.scrt
chmod 0600 /etc/rsync/rsyncd.scrt
,где ПАРОЛЬ тот, что мы выдаем вам при создании в панели управления задания на резервное копирование. В дальнейшем вы можете изменить пароль на свой в файле rsyncd.scrt и на сервере хранения резервных копий в файле /var/www/rc-******/data/rsyncd.pass, где rc-****** ваш логин на сервер с бэкапами.
Внимание! Если пароли на вашем сервере и сервере с бэкапами не совпадут, резервные копии создаваться не будут.

Далее создаем основной конфиг rsyncd.conf
  1. cd /etc/Обратите внимание на то, что файл rsyncd.conf должен быть расположен в папке /etc/
  2. mv rsyncd.conf rsyncd.oldделаем так на всякий случай, вдруг файл такой уже есть.
  3. cat << EOF >> /etc/rsyncd.conf
    pid file = /var/run/rsyncd.pid

    motd file = /etc/rsync/rsyncd.motd

    uid = root
    gid = root
    max connection = 4

    auth users = backup
    secrets file = /etc/rsync/rsyncd.scrt

    [bkpl]
    path = /
    read only = yes
    host allow = ssh.bkp177.backupland.com
    EOF
  4. Применяем настройки
    для Centos 7systemctl restart rsyncd.serviceдля Centos 6service xinetd restart

Если у вас на сервере установлен Firewall вам нужно разрешить входящие соединение на порт 873


Описание полей файла конфигурации rsyncd.conf

Текст конфигурации такой:

pid file = /var/run/rsyncd.pid#pid файл хранящий ID процесса
motd file = /usr/local/etc/rsyncd.motd #файл приветствия
uid = root#работа под правами этого пользователя*
gid = wheel#работа с правами этой группы*
max connection = 4#кол-во коннектов со стороны сервиса
auth users = backup#логин пользователя для доступа извне
secrets file = /usr/local/etc/rsyncd.scrt#файл с логином и паролем для доступа извне
[bkpl]#секция, в которой описано что можно делать
path = /#Какую папку можно бэкапить
read only = yes#Разрешено только бэкапить, восстановить нельзя будет
host allow = ssh.bkp177.backupland.com#сервер, где будут храниться резервные копии

Внимание! Вместо ssh.bkp177.backupland.com вы должны вписать, тот хост который вы получили при регистрации. Так же путь /usr/local/etc/ зависит от того какая у вас операционная система.
* Если вы не собираетесь резервировать весь сервер, тогда права root вы можете заменить на права пользователя, файлы которого вы будете бэкапить.