21. Резервное копирование¶
Для надежности, обязательно используйте регулярное резервное копирование данных, даже если вы используете raid-массив.
Резервное копирование настроек¶
Сохранение резервной копии учётных записей пользователей, а также настроек серверов, выполненных при помощи утилит Calculate 2, выполняется командой:
cl-backup
Вы можете настроить ежедневное сохранение резервной копии, создав в директории /etc/cron.daily/ файл со следующим содержимым:
#!/bin/bash cl-backup
Не забудьте присвоить файлу права на выполнение.
Резервное копирование данных¶
Рассмотрим случай, когда для хранения данных на сервере используются три жестких диска, подмонтированных следующим образом:
#cat /etc/fstab ... /dev/sda5 /var/calculate xfs noatime 0 0 /dev/sdb1 /var/calculate/server-data xfs noatime 0 0 /dev/sdc1 /var/calculate/server-data/samba/share xfs noatime 0 0 ...
В примере мы используем резервное копирование файлов на другой сервер, выполняющий функции хранилища копии данных. Backup-сервер также располагает жесткими дисками не меньшей ёмкости. Соответственно копировать информацию нужно будет с каждого диска по отдельности.
Большую часть времени Backup-сервер выключен и включается только во время копирования данных. Для настройки функции пробуждения сервера, воспользуйтесь следующим описанием.
Пример скрипта синхронизации данных пользователей с Backup-сервером.
#!/bin/bash #backup-сервер BACKUP_IP=192.168.0.250 BACKUP_MAC=01:14:7b:10:3a:6a #разбудим Backup-сервер wol $BACKUP_MAC #ждем 5 минут пока проснется sleep 300 #синхронизируем данные с трех разделов rsync -e ssh --progress -aAzuhvSx --compress-level=9 --delete-after /var/calculate/ root@$BACKUP_IP:/mnt/backup1 rsync -e ssh --progress -aAzuhvSx --compress-level=9 --delete-after /var/calculate/server-data/ root@$BACKUP_IP:/mnt/backup2 rsync -e ssh --progress -aAzuhvSx --compress-level=9 --delete-after /var/calculate/server-data/samba/share/ root@$BACKUP_IP:/mnt/backup3 #выключим до следующего пробуждения ssh -o 'StrictHostKeyChecking=no' root@$BACKUP_IP halt
В приведенном примере копируются три раздела /var/calculate, /var/calculate/server-data и /var/calculate/server-data/samba/share с параметром "x", что позволяет при копировании не выходить за пределы монтированного раздела.
Приведем пример наиболее популярных ключей команды rsync.- a - включает -rlptgoD
- A - переносить права ACL
- e — заменяет протокол с rsh на ssh
- progress — вывод хода процесса работы на терминал
- l — пересоздание symlinks, это значит, что символические ссылки будут так же переноситься
- z — использовать сжатие
- u — update, обновление, он будет пропускать файлы которые новей, чем на удалённом сервере
- o — установить владельца конечного файла таким же, как и у исходного
- g — установить группу конечного файла таким же, как и у исходного
- t — передача времени модификации и его обновление на удаленной системе. Этот ключ должен быть установлен для точной синхронизации
- h — вывод информации на терминал в удобном для чтения (human-readable) виде
- v — verbose, вывод сообщений в терминал
- p - сохранять права доступа
- r — рекурсивный режим
- S - корректно обрабатывать разреженные (sparse) файлы.
- x - не выходить за пределы ФС (например при копировании /)
- n — отладочный режим
- compress-level — уровень сжатия
- delete-after — удалять файлы, которые не были найдены на удалённом сервере, "-after" означает, что удалить их нужно, только после окончания синхронизации. Так-же есть delete-before, delete-during, delete-excluded и просто delete
Открытый ключ¶
В приведенном примере файлы передаются посредством ssh, соответственно перед каждой передачей будет запрашиваться пароль root. Вы можете создать открытый ключ и скопировать его на Backup-сервер, в этом случае пароль запрашиваться не будет.
Для этого создайте на сервере rsa ключ, выполнив:
ssh-keygen
Скопируйте ключ пользователю root Backup-сервера
ssh-copy-id -i /root/.ssh/id_rsa.pub BACKUP_IP
Отладочный режим¶
Перед тем как запустить скрипт на рабочей машине, опробуйте всё в отладочном режиме, для этого используется ключ “-n”. В этом случае, rsync не будет менять или удалять файлы, но покажет весь ход работы.
Исключение файлов¶
Rsync может как исключать, так и включать файлы по заданному шаблону. Например "—exclude *.run" исключит все файлы с расширением run.