Настройка бэкапа на CentOS 7 при помощи Rsync
Сервер с которого будет бекап
установка rsync
yum install rsync
добавить в автозагрузку
systemctl enable rsyncd
запустить
systemctl start rsyncd
открыть порт 873 в файрволе
firewall-cmd --zone=public --add-port=873/tcp --permanent
применить изменения в фаерволе
firewall-cmd --reload
или через iptables
iptables -t filter -A INPUT -p tcp --dport 873 -j ACCEPT
Сервер для хранения резервных данных
установка rsync
yum install rsync
установка sshpass
yum install sshpass
для синхронизации добавить в крон:
sshpass -p PASSWORD rsync --archive --verbose --progress --delete USER@SERVER_HOST:/var/www/ /backup/var/www/
—archive — режим архивации, объединяет несколько ключей -rlptgoD:
копирование рекурсивно. просматривая все вложенные файлы и каталоги
сохранять символические ссылки
сохранять права на файлы
сохранять время изменения файлов
сохранять группу файлов
сохранять владельца файлов (работает только для суперпользователя)
сохранять файлы устройств и специальные файлы
—delete — удалять файлы в приемнике которых нет в источнике (зеркалирование)
—verbose — повышение детализации при копировании, например показывать название файлов
—progress — показывать сколько процентов осталось до завершения и скорость передачи
Синтаксис команды rsync
# rsync [параметры] <откуда> <куда>
где
<откуда> и <куда> — источник и целевой объект
Объектами копирования могут быть как файлы, так и папки, находящиеся как в пределах файловой
системы, так и удалённо, например на SSH или RSYNC-сервере.
[параметры] — необязательные параметры копирования/синхронизации, например
-v, —verbose
повышение детализации при копировании, например показывать название файлов
-a, —archive
режим архивации, объединяет несколько ключей -rlptgoD
-r, —recursive
копирование рекурсивно. просматривая все вложенные файлы и каталоги
-l, —links
сохранять символические ссылки
-p, —perms
сохранять права на файлы
-t, —times
сохранять время изменения файлов
-g, —group
сохранять группу файлов
-o, —owner
сохранять владельца файлов (работает только для суперпользователя)
—devices
сохранять файлы устройств (работает только для суперпользователя)
—specials
сохранять специальные файлы
-D
сохранять файлы устройств и специальны файлы, идентично —devices —specials
-H, —hard-links
сохранять жесткие ссылки
-x, —one-file-system
не выходить за пределы файловой системы
-z, —compress
сжимать файлы данных во время передачи
—compress-level=NUM
явное задание степени сжатия
—skip-compress=LIST
пропуск сжатия файлов с суффиксом LIST
—progress
показывать сколько процентов осталось до завершения и скорость передачи
—numeric-ids
не транслировать имена владельца и группы в цифровые UID и GID, оставить номера как есть
—delete
удалять файлы в приёмнике, которых уже нет в источнике
—delete-before
удалять файлы перед началом копирования
—delete-during
удалять файлы во время копирования
—delete-delay
удалять файлы после окончания копирования, но искать их во время
—delete-after
удалять файлы после окончания копирования
—delete-excluded
удалять файлы включая исключённые
—exclude=PATTERN
исключать копирование файлов соответствующие маске PATTERN
—exclude-from=FILE
получить маски исключаемых при копирование файлов из файла FILE
—include=PATTERN
не исключать копирование файлов соответствующие маске PATTERN
—include-from=FILE
получить маски неисключаемых при копирование файлов из файла FILE
—files-from=FILE
получить список копируемых файлов из файла FILE
-e ssh
использовать при копировании ssh
-n, —dry-run
пробный режим копирования без изменений
—bwlimit=KBPS
установка ограничения скорости передачи файлов
Часто используемые команд
запуск rsync-сервера вручную с файлом конфигурации по умолчанию /etc/rsyncd.conf:
rsync --daemon
перезапуск rsync-сервера (при настройке запуска в режим демона)
/etc/init.d/rsync restart
выполнение синхронизации содержимого каталога target из каталога source
rsync [options] /source/ /target/
Настройка RSYNC-сервера
запуска RSYNC-сервера вручную с произвольным файлом конфигурации
rsync --daemon --config=FILE
Для включения автозапуска сервера Rsync в файл /etc/default/rsync добавить параметры
RSYNC_ENABLE=true
где переменная RSYNC_ENABLE может принимать значения:
false - запретить запуск сервера rsync,
true - запускать самостоятельный сервер rsync
inetd - запускать сервер rsync при необходимости из супер-сервера inetd.
RSYNC_CONFIG_FILE=/etc/rsyncd.conf
если параметр не указан файл конфигурации будет считываться из /etc/rsyncd.conf,
кроме тех случаев, когда rsync запускается поверх удаленной оболочки и не от
суперпользователя. В этом случае выбирается rsyncd.conf из текущего каталога
на удаленной машине (обычно $HOME).
RSYNC_OPTS=opts
добавление особенных (отличных от устанавливаемых по умолчанию) параметров запуска
например, может быть указан адрес и/или порт, на котором следует принимать соединения
"--address=192.168.0.10" (по умолчанию - все локальные адреса)
"--port=8730" (по умолчанию - 873), чтобы указать на каком порту следует принимать соединения
RSYNC_NICE=level
изменение приоритета процесса в планировщике задач
В файле конфигурации rsyncd.conf могут быть использованы параметры
uid = rsyncd
Идентификатор пользователя, от имени которого запускается rsync-сервер.
gid = mirror
Идентификатор группы, от имени которой запускается rsync-сервер.
max connections = 50
Максимальное количество одновременных подключений.
read only = yes
Установка доступа к ресурсам "только чтение".
list = yes
Установка разрешения клиентам получать список файлов.
Если запретить просмотр списка файлов, то клиенты смогут получить файл только зная его точное имя,
syslog facility = local5
Установка уровня отладочных сообщений для syslog.
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.rar *.mp3
Установка шаблонов имён файлов, содержимое которых не нужно сжимать при передаче.
use chroot = yes
Установка изменения корневого каталог rsync-сервера на указанный в path.
Изменение каталога может использоваться для повышения безопасности.
outgoing chmod = Fu=rw,g=rw,o=,Du=rwx,g=rx,o=
Установка права доступа к отдаваемым файлам.
Поскольку протокол rsync позволяет вместе с содержимым файлов передавать права доступа к ним и идентификаторы
владельца и группы, можно задать особые права доступа, которые будут заменять реальные права доступа к данному
файлу или каталогу при его передаче по сети.
[media]
В квадратных скобках задаётся имя секции.
Каждая секция обязана иметь собственный параметр path.
Дополнительно в ней могут быть переопределены и значения глобальных параметров.
path = /media/
comment = media files
Примеры использования
сокращения:
<SRC_PATH> — путь до каталога, подлежащего резервному копированию
<DEST_PATH> — путь до папки куда копируются данные
Синхронизация данных с RSYNC-сервера в целевую папку
# rsync -rlpgoDvsH --delete root@IP-RSYNC-SERVER::<SOURCE_PATH>/ <DEST_PATH>/
где
-rlpgoDvsH - параметры копирования
rroot@IP-RSYNC-SERVER::<SOURCE_PATH>/ - путь до источника данных в терминах rsync-сервера
--delete - команда "удалять файлы" в резервном архиве, если они удалены на rsync-сервере
Синхронизация двух каталогов файловой системы
# rsync -avsq --delete -b --backup-dir=<LOCAL_PATH>/modify --suffix=.`date +%Y-%m-%d` <SRC_PATH>/ <DEST_PATH>/
где
-avsq - параметры копирования
-b --backup-dir=<LOCAL_PATH>/modify --suffix=.`date +%Y-%m-%d`
- команда сохранять файлы которые изменялись в каталоге
с присвоением расширения файлам даты резервного копирования
Показать список файлов без их копирования
# rsync -avn <SRC_PATH>/ <DEST_PATH>/ - список файлов, которые должны быть скопированы
Создание (только) структуры каталогов (без копирования файлов)
# rsync -avH -f"+ */" -f"- *" <SRC_PATH>/ <DEST_PATH>/
Скачивание больших файлов (с докачкой) на неустойчивых линиях
# rsync -avsH --partial --partial-dir="<PART_PATH/>" <SRC_PATH>/ <DEST_PATH>/
где
-avsH - параметры копирования
---partial - установка сохранения даже не полностью скопированных файлов
--partial-dir="<PART_PATH/>" - путь до папки куда сохраняются не полностью скопированные файлы
--append-verify - установка проверки существующего файла для синхронизации лишь остатка не скопированного куска
Загрузка файлов с локальной системы на RSYNC-сервер с докачкой
# rsync -rvz --partial --append-verify <SRC_PATH>/ rsync://root@IP-RSYNC-SERVER:/PATH/
где
-rvz - параметры копирования
---partial - установка сохранения даже не полностью скопированных файлов
--append-verify - установка проверки полноты уже сохранённого файла и копирования только остатка
Пример настройки rsyncd.conf на RAYNC сервере
[PATH]
comment = tmp GW-HOME
path = /DEST_PATH/
read only = no
uid = nobody
gid = nogroup
hosts allow = 0.0.0.0/0.0.0.0
а для пути /DEST_PATH/ предоставлены, например права
# mkdir /DEST_PATH/
# chmod 777 /DEST_PATH/
Копирование на FTP-сервер
# curlftpfs FTPSERVER:FTPPORT /tmp/ftp/ -o user=FTPUSER:FTPPASSW,allow_other
- монтирование FTP-сервера с помощью программы curlftpfs
# rsync -rzv --inplace --append --stats --timeout=7200 <SRC_PATH>/ <DEST_PATH>/
где
-rzv - параметры копирования
--inplace - обновление существующего файла
--append - добавление данных к меньшему файлу
--timeout=7200 - задержка для операций ввода-вывода
Источник: http://tdkare.ru/sysadmin/index.php/Rsync