Unix: синхронизация файлов или резервное копирование через Rsync (FreeBSD, Debian, CentOS)

Практика



Как мы делаем резервное копирование данных на Unix машинах? Чаще всего системные администраторы для этого используют первое, что попадает под руку - просто копирование нужных файлов на удаленный сервер.

Один из вариантов это делать - это использовать утилиты SCP - для передачи файлов по SSH. Но есть более интересный вариант, в особенности, если Вы собираетесь организовать разностное копирование файлов (т.е. копировать только новые или измененные файлы, а не все подряд) - это утилита RSYNC.


Установка

В отличие от SCP - она не идет из коробки, потому будем ее ставить.

Linux Debian/ubuntu:
$ sudo aptitude install rsync

Linux CentOS/RedHat:
$ sudo yum install rsync

FreeBSD:
$ cd /usr/ports/net/rsync
$ sudo make install clean
здесь Вас попросят включить нужные опции. Ориентируйтесь на свои нужды, но опцию SSH оставьте включенной - оно нам понадобится.



Что еще нужно

Кроме клиента для Rsync нужен еще его сервер. Он ставится вместе с клиентом, потому аналогичные операции, описанные выше, требуется провести и на компьютере, куда будет производится копирование.

После этого

FreeBSD:

открываем на редактирование на удаленном сервере файл /etc/rc.conf и добавляем в него строчку:
rsyncd_enable="YES"
после чего на удаленном компьютере запускаем сервер Rsync:
$ sudo /usr/local/etc/rc.d/rsyncd start

Debian/ubuntu:

Здесь мороки больше. Сначала открываем файл /etc/default/rsync и меняем в строчке "RSYNC_ENABLE=false" на "RSYNC_ENABLE=true":
RSYNC_ENABLE=true

Потом идем в /etc и создаем конфиг Rsync (rsyncd.conf) примерно такого вида:
log file=/var/log/rsyncd
pid file=/var/run/rsyncd.pid
socket options = SO_KEEPALIVE

и, наконец, запускаем Rsync:
$ sudo /etc/init.d/rsync start

CentOS/RedHat:

Тоже нужно поковыряться. Открываем на редактирование файл /etc/xinetd.d/rsync и меняем строчку "disable = yes" на "disable = no".

После чего перезапускаем демона xinetd:
$ sudo /etc/init.d/xinetd restart




Использование

$ sudo rsync -e ssh --progress -lzuogthvr --compress-level=9 --delete-after /mydir/sourcedir username@remoteserver:/backupdir/

Поясним передаваемые параметры:
  • -e ssh : Использовать SSH для связи
  • --progress : Показывать прогресс копирования
  • -l : Пересоздавать synlinks - т.е. на удаленном сервере будут созданы симлинки, ссылающиеся на нужное место. Даже если на удаленном сервере этого места не существует - лучше делать так, т.к. при возвращении резервной копии на этом компьютере симлинки станут рабочими!
  • -z : Использовать сжатие (для экономии трафика). Если дофига сжимать - копирование может занять дофига времени и можно отказаться от этой опции - в случае недостаточной мощности процессора
  • -u : Режим обновления - т.е. разностное копирование. Утилита скопирует только те файлы, которые еще не существуют на удаленном сервере или которые были изменены.
  • -o : Установить пользователя-владельца скопированного файла таким-же, как и у оригинала
  • -g : Установить группу-владельца скопированного файла таким-же, как и у оригинала
  • -t : Установить время создания/модификации файла на удаленном сервере такое-же, как и у оригинала. Опция обязательна для разностного копирования - иначе время файла на удаленном компьютере установится текущим
  • -h : Вывод информации на экран в удобном для человека виде (human-readable)
  • -v : Verbose-вывод (т.е. расширенная информация в процессе копирования)
  • -r : Рекурсивное копирование (т.е. все, что находится по указанному пути, включая поддиректории).
  • --compress-level=9 : Уровень сжатия
  • --delete-after : Изменяет поведение утилиты. По-умолчанию утилита сначала удаляет целевой файл, если он существует, и только потом копирует его замену, что полезно при передаче больших файлов на сервер, на котором слабо со свободным местом. Если же указать --delete-after - то сначала в temp-директорию будет скачан новый файл, а уже потом будет произведено удаление старого.
  • /mydir/sourcedir : директория, которая будет скопирована
  • username : имя пользователя на удаленном сервере
  • remoteserver : IP адрес или hostname удаленного сервера
  • /backupdir/ : Директория, в которую будет положена копируемая папка

При использовании данной утилиты из скрипта автоматического резервного копирования опции --progress, -h и -v указывать смысла нет.


Обратно скопировать всю директорию можно так (при восстановлении из резервной копии):
$ sudo rsync -e ssh --progress -lzuogthvr --compress-level=9 --delete-after  username@remoteserver:/backupdir/ /mydir/sourcedir
т.е. мы просто поменяли последние 2 параметра.



PS. При использовании утилиты для копирования в автоматическом режиме - нужно организовать безпарольный доступ по SSH. Как это сделать - описано ранее
создано: 2017-05-10
обновлено: 2021-03-13
603



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционная система LINUX

Термины: Операционная система LINUX