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.

Спасибо!