Настройка бэкапа на 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