Настройка синхронизации файлов между двумя серверами

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

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

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

Установка на Debian-based дистрибутивы всего в одну команду:

sudo apt-get install rsync

Синтаксис утилиты rsync следующий:

rsync [опции] [отправитель] [получатель]

Синхронизировать можно по следующим протоколам: samba, ssh, rsync, а также можно синхронизировать две папки (например на жестком диске и USB флешке).

Настройка сервера RSYNC заключается в создании конфигурационного файла «/etc/rsyncd.conf», в котором задается путь к папке, разрешенные и запрещенные диапазоны IP адресов, разрешение на чтение, группа и пользователь, который владеет директорией и файлами в ней.

sudo nano /etc/rsyncd.conf
[share]
path = /mnt/data/
hosts allow = 192.168.0.*
hosts deny = *
list = true
uid = nobody
gid = nogroup
read only = false

После создания конфигруационного файла, нужно запустить службу rsync.

sudo service rsync start

Теперь рассмотрим различные примеры синхронизации rsync.

  1. Синхронизация данных на локальной машине, в случае если один файл:
    rsync -zvh /home/user/archive.tar.gz /mnt/data/backups/
    Можно также синхронизировать папки целиком, например:
    rsync -avzh /mnt/data/ /mnt/usb/
  2. Синхронизация данных с удаленным сервером RSYNC.
    [пользователь]@[IP-адрес]:[порт]/путь/к/папке
    Для загрузки файлов на локальный сервер:
    rsync -avz /mnt/data/documents/ [email protected]:/home/documents/
    Также можно сделать наоборот, выгрузить файлы с сервера на свой ПК:
    rsync -avz [email protected]:/home/documents/ /mnt/data/documents/
  3. Синхронизация с удаленным сервером по протоколу SSH.
    Для задания протокола подключения используется ключ -e. Передать файлы на сервер можно таким образом:
    rsync -avzhe ssh backup.tar.gz [email protected]:/storage/
    А выгрузить данные с сервера можно так:
    rsync -avzhe ssh [email protected]:/var/log/apache2/access.log /mnt/logs/

У rsync есть также много параметров, это позволяет тонко настроить параметры синхронизации.

Атрибут Описание
-v Вывод подробной информации в консоль
-q Показывать минимум информации
Проверять хеш-суммы файлов
-a Режим архивирования
-R Позволяет задать относительные пути
-b Создать резервную копию
-u Не перезаписывать новые версии файлов
-l Копировать cимвольные ссылкам
-L Копировать содержимое по ссылкам
-H Копировать жесткие ссылки
-p Синхронизировать права для данных
-g Синхронизировать группу, которая владеет данными
-t Сохранять атрибуты времени изменения данных
-x Работать только в пределах этой файловой системы
-e Использование другого протокола для передачи
-z Использовать сжатие при транспортировке данных
—delete Удалять файлы, которых нет в исходной директории
—exclude Шаблон для исключения файлов
—recursive Рекурсивная работа с директориями
—no-recursive Не использовать рекурсию
—progress Подробно выводить стстус процесса передачи данных
—stat Показать статистику передачи данных

Можно также настроить автоматическую синхронизацию с помощью rsync. Для этого на локальной машине создаем ключ.

ssh-keygen -t rsa

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

ssh-copy-id -i /home/user/.ssh/id_rsa.pub [email protected]

Теперь осталось повесить задачу на синхронизацию в cron.

crontab -e

В файл добавляем новую строку:

0 22 * * 1-5 rsync -azvr /home/user/Downloads/ 192.168.1.101::share

Например такое расписание будет синхронизировать локальную папку с загрузками на сервер в 22:00 с понедельника по пятницу.

В общем rsync это мощный инструмент для синхронизации данных, который позволит вам более бережно хранить свои файлы.

ShiftHackZ

ShiftHackZ

Автор блога LocalHost // Blog. Интересуюсь компьютерными технологиями, системным администрированием и веб-разработкой. Днями напролет провожу время за своим компьютером и самосовершенствуюсь. Подробнее

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *