База знаний
NetPoint > Help Desk > База знаний

Поиск справки:


Резервное копирование виртуальной машины/выделенного сервера

Решение

В настоящей статье рассматривается процедура организации резервного копирования виртуальной машины или выделенного сервера под управлением ОС GNU/linux средствами системы резервного копирования duplicity.

Система duplicity доступна в большинстве дистрибутивов linux, например в Debian/Ubuntu установка duplicity выполняется командой: apt-get install duplicity.

Duplicity позволяет выполнять инкрементное резервное копирование файловой системы с хранением в удаленном хранилище по протоколам FTP, SFTP, RSYNC и т.п. Подробнее в man duplicity.

В настоящем руководстве будет рассмотрено использование duplicity с хранилищем SFTP и предложена удобная обвязка для более простой настройки системы.

Итак, представим, что у нас есть удаленное SFTP-хранилище, по адресу: c1-ftp1.netpoint-dc.com, пользователь доступа к хранилищу netpoint, на сервере каталог для записи называется _data.

Сначала настроим SFTP для входа в хранилище по сертификату. Для этого, с помощью утилиты ssh-keygen сгенерируем ключи доступа.

ssh-keygen -t rsa

пароль указывать не надо. В итоге, в Вашем каталоге /root/.ssh/ окажется два файла: id_rsa и id_rsa.pub - приватный и публичные ключи доступа к SFTP.

Далее, вы должны поместить содержимое id_rsa.pub в файл .ssh/authorized_keys на сервере c1-ftp1.netpoint-dc.com.

Для этого заходим на сервер по sftp с использованием пароля:

sftp netpoint@c1-ftp1.netpoint-dc.com

скачиваем файл .ssh/authorized_keys, дополняем его содержимым id_rsa.pub и загружаем authorized_keys обратно.

Повторный вход на sftp должен теперь осуществляться без пароля.

Проверим работоспособность системы duplicity:

duplicity --ssh-options -oIdentityFile=/root/.ssh/id_rsa --volsize=500 --full-if-older-than=1M /home ssh://netpoint@c1-ftp1.netpoint-dc.com/_data/test-home
duplicity --ssh-options -oIdentityFile=/root/.ssh/id_rsa remove-older-than 2M --force ssh://netpoint@c1-ftp1.netpoint-dc.com/_data/test-home

В результате выполнения команды на сервере должен появиться каталог test-home, в котором содержатся файлы с расширением gpg.

Вышеуказанные команды выполняют резервное копирование файлов из каталога /home с выполнением полной копии 1 раз в месяц и 30 инкрементных копий, при этом архивные данные старше 2х месяцев удаляются с сервера, при этом размер одного тома составляет 500MB.

Технически, вы можете организовать резервное копирование с использованием вышеуказанных команд. Далее предлагается обвязка, которая объединяет средства снятия дампов с БД MySQL и удобного архивирования файлов с помощью duplicity. Обвязка реализована на языке программирования perl. Исходный код обвязки распологается во вложении настоящей статьи. Распространяется под лицензией BSD.

Для работы обвязки необходимо создать конфигурационный файл вида /usr/local/etc/backup-server_<HOSTNAME>.conf. Синтаксис конфигурационного файла ниже:

#!/usr/bin/perl

{
# пароль GPG
gpgpass => 'Doja_K2rA^Mi',
# расположение частного ключа
private_key => '/root/.ssh/id_rsa',
# сервер, куда осуществляется копирование
server=> 'ssh://netpoint@c1-ftp1.netpoint-dc.com/_data',
# файл для логов duplicity
server_log=> '/var/log/backup-server.log',
# размер тома
volume=> 500,
# список серверов MySQL для архивирования
mysql => [ {
# в какой каталог делать дамп
dumpdir => '/dbdump-local',
# доступ к серверу
db => ['localhost','root','XXXXXXXXX'] }
],
# файлы для резервного копирования
locations => {
'/' => {
# исключаем из архивирования
exclude => ['/proc','/sys','/dev','/tmp','/mnt','/var','/dbdump-local'],
# период создания полной копии
period => '1M',
# период очистки
clear=> '2M',
# путь на сервере, куда сохранять тома
path=> '/t-backup-%HOST%-sys'
},
'/var' => {
exclude => ['/var/tmp'],
period => '1M',
clear=> '3M',
path=> '/t-backup-%HOST%-var'
},
'/dbdump-local' => {
exclude => [],
period => '1M',
clear=> '3M',
path=> '/t-backup-%HOST%-db'
},
}
}

Для конфигурационного файла имеет смысл установить права доступа в 600, chmod 600 /usr/local/etc/backup-server_<HOSTNAME>.conf. Далее, сохраняем файл backup-server из архива в каталог /etc/cron.daily и устанавливаем на него права доступа 700, chmod 700 /etc/cron.daily/backup-server.

Для проверки работоспособности выполняем тестовый запуск: /etc/cron.daily/backup-server

Результат выполнения должен быть похож на:

Dumping information_schema@localhost ... DONE
Dumping billmgr@localhost ... DONE
Dumping mysql@localhost ... DONE
Copying /var DONE
Cleaning /var DONE
Copying / DONE
Cleaning / DONE
Copying /dbdump-local DONE
Cleaning /dbdump-local DONE

Все вопросы и пожелания можно адресовать с помощью системы RT.

 

Вложения:
backup-server.zip backup-server.zip

 
Была ли эта статья полезной? ДА / НЕТ
Детали статьи
Идентификатор статьи: 30
Категория: GNU/Linux
Дата добавления: 2013-05-29 14:47:28
Просмотры: 887
Рейтинг (Голоса): Рейтинг статьи 3.7/5.0 (3)

 
« Назад

 
Powered by Help Desk Software HESK - brought to you by Help Desk Software SysAid