Бэкап и синхронизация данных и файлов с Rsync

В этой статье опишем процесс настройки Rsync для быстрой синхронизации данных на серверах c ОС Unix. Данное руководство будет полезно тем, кто хочет организовать систему автоматических бэкапов данных у себя на FreeBSD, Ubuntu, Debian и прочих серверах.

Главный плюс Rsync это то что он делает синхронизацию файлов достаточно быстро за счет того,  что копирует только те файлы, которые были изменены (Инкрементальный бэкап). Для примера —  бэкап папки весом 60GB и содержащей кучу мелких файлов на другой компьютер по сети у меня делается приблизительно за 10 минут (Но это конечно все очень относительно и зависит от многих факторов).

Итак, приступим.

В примере будет использоваться машина с FreeBSD с нее будет делаться бэкап папки, и машина с Ubuntu, куда будет ложиться бэкап.

Для начала устанавливаем rsync на оба компьютера:

на FreeBSD

cd /usr/ports/net/rsync

make install clean

на Ubuntu

apt-get install rsync

Возможно, по умолчанию на Ubuntu уже будет rsync.

Далее приступим к настройке FreeBSD, здесь лежит папка, бэкап которой мы будем делать

редактируем файл настроек rsync на FreeBSD /usr/local/etc/rsyncd.conf

И приводим его к примерно такому виду:

# rsyncd.conf - Example file, see rsyncd.conf(5)

# Set this if you want to stop rsync daemon with rc.d scripts
pid file = /var/run/rsyncd.pid

# Указываем файл для логов
log file = /var/log/rsyncd.log
# Выключаем логирование передаваемых файлов
transfer logging = no

#uid = nobody
#gid = nobody
#use chroot = no
#max connections = 4
#syslog facility = local5

## ОСНОВНАЯ СЕКЦИЯ

# Имя ресурса
[data]
# Пользователь от которого будет производиться доступ
   uid = root
# Путь к папке которую бэкапим
   path = /usr/data
# Разрешить только чтение папки
   read only = yes
# Разрешить просматривать файлы
   list = yes
# IP которым разрешен доступ (указываем IP куда будет копироваться папка)
   hosts allow = 192.168.0.2
# Пользователь для авторизации (далее мы его опишем)
   auth users = backup
# Путь к файлу с логинами и паролями для авторизации
   secrets file = /usr/local/etc/rsyncd.scrt

Далее создаем файл /usr/local/etc/rsyncd.scrt, где будет храниться логин и пароль для доступа и выставляем ему права

touch /usr/local/etc/rsyncd.scrt

chmod 600 /usr/local/etc/rsyncd.scrt

И вставляем туда строчку c логином и паролем (такого вида: «Логин:Пароль»)

backup:parol

Далее добавляем в /etc/rc.conf строку

rsyncd_enable="YES"

И запускаем демон

/usr/local/etc/rc.d/rsyncd start

Настройка первого компьютера закончена,

——————————————————————————————————-

приступаем ко второму:

Второй компьютер с Ubuntu, куда будет делаться бэкап особо настраивать не надо, достаточно лишь создать файл с паролем и выставить права, для того чтобы при выполнении синхронизации не требовалось вводить пароль (очень полезно если вы выполняете бэкап через cron по расписанию)

Делаем это так:

touch /etc/rsyncd.scrt

chmod 600 /etc/rsyncd.scrt

И добавляем в него строчку с паролем от пользователя backup

parol

После всех проделанных действий запускаем на 2 компьютере с Ubuntu команду
(это 1 строка):

rsync -urlogt --delete-after --password-file=/etc/rsyncd.scrt
 backup@192.168.0.5::data /BACKUP/data

Разберем команду:

-u Обновление, пропускает файлы которые не изменились

-r Рекурсивный режим

-l Пересоздание символических ссылок, символические ссылки тоже будут переноситься

-o Сохранять при копировании имя владельца файла

-g Сохранять при копировании группу владельца файла

-t Передача времени последнего изменения файла

—delete-after Удалять файлы не найденные на удаленном сервере

—password-file=… Путь к файлу с паролем

backup@192.168.0.5::data — Имя_пользователя@сервер_откуда_бэкапить::имя_ресурса_на_удаленном_сервере

/BACKUP/data — путь куда ложится бэкап
—————————————————
Чтобы смотреть процесс синхронизации в реальном времени добавляем ключи -hv и —progress

Чтобы бэкап делался автоматически добавляем новую строчку в файл /etc/crontab. Например такую:
(это 1 строка)

0 2 * * * root rsync -urlogt --delete-after --password-file=/etc/rsyncd.scrt
backup@192.168.0.5::data /BACKUP/data

И напоследок, если хочется чтобы делалось сразу несколько бэкапов за разные даты, то можно почитать здесь

Комментарии
  • Вот спасибо Вам! Пока единственная статья, где понятно изложено, как делать бэкап. Особенно код хорош, что при бэкапе удаляются старые (ненужные) файлы. Нет, я конечно читал ман, но с моим английским…
    Кстати, можно еще добавить следующую опцию
    —exclude=ИНГОРИРУЕМАЯ_ПАПКА
    Т.о. я исключаю от копирования ненужную папку.

  • Огромное спасибо. Статья реально супер, так как всё очень разжёванно и по пунктам изложено. Всё логично и структурированно. В других местах ну крайне запутано, нигде нет ясности, где rsync работает как сервер а где как клиент.

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

Ваш адрес email не будет опубликован.

Sidebar