Бэкап и синхронизация данных и файлов с 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 работает как сервер а где как клиент.
Очень понятно и доступно.
Благодарю за Ваш труд!
А как сделать бэкап Ubuntu Server на Win7?