The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

FSBACKUP - file system backup and synchronization utility.

* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY WARRANTIES *

For english documentation view "perldoc fsbackip.pl" or read "Step-by-step guide"

FSBACKUP - система инкрементального резервного копирования и синхронизации ФС.

http://www.opennet.ru/dev/fsbackup/

По всем вопросам обращайтесь к автору: Maxim Chirkov <mc@tyumen.ru>
GitHub: opennet/FSBackup
Download fsbackup-1.2pl2 от 19 октября 2007 г.
RPM-пакеты для RHEL/CentOS/Oracle Linux 5/6 и Fedora 16/17/18
В портах FreeBSD sysutils/fsbackup

Изменения (CHANGES) | Пример файла конфигурации | FAQ | FTP

СОДЕРЖАНИЕ:



Назначение:

Система fsbackup была создана для обеспечения резервного копирования серверов разного масштаба на специально отведенном сервере бэкапа. Достоинствами метода резервного копирования на специально отведенном сервере, с использованием fsbackup, является: - высокая производительность (скорость передачи по 100Мбит сети намного выше скорости записи на ленточный накопитель), низкая себестоимость (цена Мб на современных жестких IDE дисках достаточно низкая); - надежность (возможность параллельного хранения нескольких резервных копий за разные моменты времени); - безопасность (применение PGP шифрования резервных копий перед записью на бэкап сервер); - автономность (один раз настроив систему бэкап будет производится автоматически, не нужно обслуживать стриммер), - возможность сохранения только измененных с последнего бэкапа данных, без затрат на копирования не изменившейся информации. - простота настройки и установки (как правило система способна функционировать сразу после запуска инсталляционного скрипта) - простота восстановления (открытый формат для хранения резервных копий (tar), позволяет восстановить данные без использования входящих в комплект утилит восстановления). - гибкость задания масок для помещения файлов и каталогов в архив. - поддержка бэкапа баз данных хранимых в MySQL и PostgreSQL. fsbackup может выполнять создание как полного образа сервера, так и резервных копий основных подсистем, исключая операционную систему. В случае полного бэкапа, полное восстановление работоспособности происходит в течении нескольких десятков минут, в случае частичного бэкапа для восстановления требуется несколько часов. В отличие от многих систем автоматического резервного копирования, в fsbackup применяется гибкая система построения масок (с использованием regex) для принятия решения о помещении файлов в бэкап.

Комплект поставки:

create_backup.sh Скрипт для периодического запуска всей подсистемы резервного копирования из crontab. install.pl Скрипт для установки программы и всех недостающих Perl модулей. fsbackup.pl Основной скрипт для бэкапа и синхронизации. cfg_example Пример файла конфигурации и документация по всем конфигурационным директивам. cache/ Образ директории для помещения временных хэшей. sys_backup/ Образ директории для помещения бэкапов созданных sysbackup.sh. modules/ Perl модули которые требуются для функционирования fsbackup.pl. scripts/ Директория со вспомогательными скриптами. scripts/mysql_backup.sh scripts/pgsql_backup.sh Скрипты для создания полного и частичного бэкапа базы данных хранимой в PostgreSQL или MySQL. Поддерживаются режимы работы: 1. полный бэкап всех баз и структур; 2. полный бэкап структур всех баз + бэкап данных в избранных базах; 3. полный бэкап структур всех баз + бэкап данных во всех базах, кроме избранных баз; scripts/sysbackup.sh Скрипт для сохранения списка всех установленных в системе пакетов для FreeBSD и Linux, для Linux использующих rpm - сохранение файлов конфигурации всех установленных в системе пакетов. scripts/sysrestore.sh Скрипт для автоматической установки всех пакетов, список которых был сохранен скриптом sysbackup.sh, в свеже-установленной системе. scripts/fsrestore.sh Скрипт для восстановления данных из инкрементального бэкапа.

Выполняемые функции:

- 2 метода вычисления контрольных сумм: timesize - по атрибутам (дата, время, размер, права доступа...) md5 - по содержимому файла. - 4 вида бэкапа: backup - инкрементальный бэкап в архив (т.е. копируются только изменившиеся с момента последнего бэкапа файлы). full_backup - полный бэкап в архив, без хэша (т.е. всегда копируются все файлы). sync - синхронизация дерева. hash - только генерация хэша, без помещения файлов в архив (может использоваться для определения какие файлы были изменены) - 3 типа хранилища бэкапа: local - хранение бэкапа в локальной файловой системе. remote_ssh - копирование бэкапа на удаленную машину с использованием SSH remote_ftp - копирование бэкапа на удаленную машину по FTP. - 8 встроенных операторов (можно использовать regex) для описания помещаемых в бэкап (или игнорируемых для помещения в бэкап) файлов: /dir[/file] - путь к файлу/директории для бэкапа. !/dir[/file] - отрицание пути, не помещать в бэкап. # - комментарий =~ - маска для файла или директории, а не абсолютный путь. Первый или второй символ. f~ - маска для файла. Первый или второй символ. d~ - маска для директории. Первый или второй символ. =! - "НЕ" маска для файла или директории, а не абсолютный путь. Первый или второй символ. f! - "НЕ" маска для файла. Первый или второй символ. d! - "НЕ" маска для директории. Первый или второй символ. Ограничен по времени создания и размеру - Возможность шифрования бэкапа с помощью PGP. - Гибкое задание уровня инкрементальности. Например, при = 7 - 6 раз будут помещаться только изменения, на 7 раз бэкап будет объединен в один файл. - Скрипт для сохранения списка всех установленных в системе пакетов для FreeBSD и Linux. - Скрипты для создания полного и частичного бэкапа базы данных хранимой в PostgreSQL или MySQL. Поддерживаются режимы работы: - полный бэкап всех баз и структур; - полный бэкап структур всех баз + бэкап данных в избранных базах; - полный бэкап структур всех баз + бэкап данных во всех базах, кроме избранных баз;

Установка:

Для установки достаточно запустить скрипт ./install.pl Программа автоматически скопируется в заданный директивой --prefix каталог, по умолчанию установка производится в каталог /usr/local/fsbackup. После установки достаточно переименовать и отредактировать файл конфигурации cfg_example, следуя приведенным внутри cfg_example инструкциям. Затем, отредактируйте скрипт запуска "create_backup.sh", при необходимости измените путь к хранилищу бэкапа и название список используемых файлов конфигурации. Активируйте периодический запуск подсистема бэкапа в crontab: 18 4 * * * /usr/local/fsbackup/create_backup.sh| mail -s"`uname -n` backup report" root При использовании бэкапа SQL сервера или системы отредактируйте скрипты в директории ./scripts (mysql_backup.sh, pgsql_backup.sh, sysbackup.sh). Например: >su # ./install.pl # cd /usr/local/fsbackup # vi cfg_example # mv cfg_example server_backup.conf # vi create_backup.sh # crontab -e # cd scripts # vi sysbackup.sh # vi pgsql_backup.sh # exit >

Файл конфигурации:

Подробное описание всех параметров файла конфигурации смотрите в файле cfg_example. Внимание, при описании директорий для бэкапа нельзя указывать путь к символической ссылке, только полный путь к реальной директории. Например, если указано /home, а это символическая ссылка на /usr/home, то в бэкап будет помещены данные о символической ссылке, а не содержание директории. Рекомендуется, описать бэкап разных участков файловой системы в нескольких файлах конфигурации. Например, мной используется следующие несколько файлов конфигурации: server_etc.conf - описывает создание бэкапа директории /etc и секретных данных с использованием PGP шифрования; server_local.conf - бэкап /usr/local, за исключением временных файлов, бэкап БД. server_home.conf - бэкап директорий пользователей (/home или /usr/home)

Восстановление данных:

Полная резервная копия может быть восстановлена в короткий промежуток времени без использования дополнительных, входящих в комплект fsbackup утилит. Например, если архив бэкапа сохранен в директории /mnt/full_backup, для полного восстановления достаточно набрать: # cd / # tar xzf /mnt/full_backup/full_backup.tar.gz # sh /mnt/full_backup/full_backup.dir Для полного восстановления данных из инкрементального бэкапа может использоваться скрипт scripts/fsrestore.sh, для восстановления просто отредактируйте пути внутри скрипта и запустите его. В случае частичного бэкапа файловой системы, без бэкапа файлов операционный системы, восстановить исходный набор установленных в момент бэкапа пакетов (должен быть разрешен запуск scripts/sysbackup.sh в create_backup.sh) поможет скрипт scripts/sysrestore.sh. После установки ОС, скрипт автоматически установит недостающие пакеты для FreeBSD и Linux. При бэкапе данных с SQL сервера PostgreSQL или Mysql, восстановление производится командами: psql -d template1 -f sqlbackupfile или mysql < sqlbackupfile. Таким образом можно привести типовой процесс полного восстановления системы: - базовая установка ОС (без дополнительных пакетов) - монтирование диска с бэкапом. - редактирование путей и запуск scripts/sysrestore.sh для установки нужных пакетов. - редактирование путей и запуск scripts/fsrestore.sh - запуск SQL сервера и восстановление баз. Назначение файлов при инкрементальном бэкапе (для не инкрементального - формат "имя.ext"): имя-время.tar.gz архив - бэкапа. имя-время.del список удаленных с момента предыдущего бэкапа файлов имя-время.hash хэш таблица с контрольными суммами. имя-время.list список файлов в архиве. имя-время.dir команды для восстановления прав доступа и пустых директорий.

Виды бэкапа:

Вид бэкапа в файле конфигурации определяется параметром $cfg_backup_style: backup - инкрементальный бэкап в архив. Копируются только изменившиеся с момента последнего бэкапа файлы, уровень инкрементальности задается параметром $cfg_increment_level, параметр определяет через какого числа итераций файлы с инкрементальными копиями будут объединены в один файл. Например, при $cfg_increment_level = 7 - 6 раз будут помещаться только изменения, на 7 раз бэкап будет объединен в один файл. 0 - сколько угодно раз, без объединения. Достоинства - возможность отследить изменения (и восстановить данные) на любой момент со времени первой итерации, в архив копируются только измененные и новые данные, что значительно экономит трафик и место на диске. Подходит для ежедневного бэкапа динамично меняющейся или критичной к потере информации. full_backup - полный бэкап в архив, без хэша. В бэкап всегда помещаются все файлы отмеченные в файле конфигурации для резервного копирования). На сервере где сохраняется бэкап рекомендуется проводить вторичное резервирование, например, в crontab раз в неделю дублировать бэкап в другую директорию. Недостатки - огромный трафик для копирования бэкапа по сети и высокие требования к объему хранилища бэкапа. Достоинство - экономия процессорных ресурсов и памяти на создание и поддерживание хэша. Прекрасно подходит для бэкапа маломощных машин с ограниченными ресурсами или при статичности резервируемых данных (например, бэкап выносных рутеров раз в месяц). sync - синхронизация дерева (только для типа хранилища ssh или local). Почти то же, что и full_backup или backup (в зависимости от задания ключа -c при запуске fsbackup.pl), за исключением того, что копия не хранится в архиве, а область файловой системы отмеченная для бэкапа полностью воссоздается в заданной директории на бэкап сервере. Предназначено для параллельного хранения (синхронизации дерева) исходных текстов, содержимого web-сервера, синхронизации проектов с рабочей машины разработчика на сервер и т.д. hash - только генерация хэша, без помещения файлов в архив (опция -h). Может применяться для пометки помещения файлов в бэкап, без физического их перемещения, для отслеживания изменений в файловой системе для обнаружения подмены файлов злоумышленниками и т.д. Скрипт fsbackup.pl, поддерживает ряд ключей задаваемых в командной строке: fsbackup.pl [-n|-f|-h|-c] файл_конфигурации -n - создаем новый архив независимо от состояния хэша. -f - full_backup - полный бэкап в архив, без хэша. -h - hash - только генерация хэша, без помещения файлов в архив. -c - clean - очистка хранилища с инкрементальным бэкапом и создание нового бэкапа.

Типы хранилища для архива бэкапа:

Определение типа хранилища для бэкапа определяется в файле конфигурации переменной $cfg_type. Поддерживается 3 типа хранилищ: local, remote_ssh и remote_ftp. - local - сохранение бэкапа в локальной файловой системе. Конфигурация: $cfg_type="local"; $cfg_local_path="/var/backup"; # Путь к хранилищу. - remote_ssh - сохранение бэкапа на удаленном компьютере, данные передаются через шифрованное соединение организованное с использованием SSH. На системе с которой производится бэкап должен быть установлен ssh клиент, на удаленном - ssh сервер. Метод remote_ssh является наиболее защищенным, но и достаточно ресурсоемким. Предварительно необходимо настроить доступ бэкап клиента на сервер с использованием шифрованных ключей, без ввода пароля. Это делается следующим образом: Примем: локальная машина - машина с которой будет производиться бэкап и на которой будем запускать скрипт fsbackup.pl. Удаленная машина - машина на которую будут копироваться файлы с бэкапом. Запускаем на локальной машине программу ssh-keygen, на все задаваемые вопросы принимаем значения по умолчанию (поле passphrase оставляем пустым). Далее, запускаем программу ssh-copy-id user@remotehost, где user - пользователь удаленной машины remotehost - адрес удаленной машины, ( или вручную, на удаленной машине в директории ~/.ssh, создаем файл authorized_keys, куда копируем содержимое файла identity.pub с локальной машины). Для увеличения безопасности в файл ~/.ssh/authorized_keys на удаленной машине добавляем перед ключом (разделив пробелом) строку from="localhost", где localhost - адрес локальной машины (from="localhost" 1024 23 1343.....). Конфигурация: $cfg_type="remote_ssh"; $cfg_remote_host="server.remote.ru"; # Сервер на который будет копироваться бэкап. $cfg_remote_login="backup_login"; # Логин под которым будет сохранятся бэкап. $cfg_remote_path="/home/backup_login/backup"; # Директория куда должны помещаться файлы бэкапа, директория должна присутствовать. - remote_ftp - сохранение бэкапа на удаленном компьютере, данные передаются по протоколу ftp, на удаленном хосте должен быть запущен ftp сервер. Так как пароль хранится в файле конфигурации в открытом виде, желательно ограничить доступ к хосту к удаленному хосту через tcpwrapper или firewall, а так же ограничить вход пользователя, под которым будет храниться бэкап, только через chroot ftp. Положительными сторонами копирования по ftp, является высокая производительность закачки и небольшая нагрузка на CPU. Конфигурация: $cfg_type="remote_ftp"; $cfg_remote_host="server.remote.ru"; # Сервер на который будет копироваться бэкап. $cfg_remote_password="Test1234"; # пароль для входа по ftp. $cfg_remote_login="backup_login"; # Логин под которым будет сохранятся бэкап. $cfg_remote_path="/home/backup_login/backup"; # Директория куда должны помещаться файлы бэкапа, директория должна присутствовать.

Шифрование бэкапа:

Для шифрования бэкапа в системе должна быть установлена программа PGP шифрования GnuPG: http://www.gnupg.org (рекомендуется) или PGP: http://www.pgpi.org Далее: Локальная машина - машина на которой производится резервное копирование. Удаленная машина - машина куда сохраняется архив бэкапа. Рекомендации по работе PGP программами для создания шифрованного бэкапа (для pgp2.6, pgp5.0, gnupg): Для создания публичного и секретного ключей наберите (на удаленной машине): pgp2.6> pgp -kg pgp5.0> pgpk -g gnupg> gpg --gen-key # если генерация ключа занимает слишком много времени воспользуйтесь ключом gpg --quick-random Экспортируйте созданный публичный ключ в файл (на удаленной машине): pgp2.6> pgp -akx <UserID> <файл куда будет записан ключ> pgp5.0> pgpk -ax <UserID> <файл куда будет записан ключ> gnupg> gpg --export -a <UserID> > <файл куда будет записан ключ> Затем, добавте созданный публичный ключ (на локальной машине): pgp2.6>pgp -ka <файл с ключом с удаленной машины> pgp5.0>pgpk -a <файл с ключом с удаленной машины> gnupg>gpg --import <файл куда будет записан ключ> # Для pgupg необходимо заверить ключ: gnupg>gpg --sign-key <имя ключа> Для расшифровки необходимо запустить (на удаленной машине): pgp2.6>cat encrypted.tar.gz | pgp -f -z'пароль' > расшифрованный.tar.gz pgp5.0>cat encrypted.tar.gz | pgpv -f -z'пароль' > расшифрованный.tar.gz gnupg>cat encrypted.tar.gz | gpg --decrypt > расшифрованный.tar.gz Для шифрования используется (на локальной машине): pgp2.6>cat input| pgp -ef userid > output pgp5.0>cat input| pgpe -f userid > output gnupg>cat input| gpg -e -r userid > output

Обратите внимание на программы:

alertmon - Система слежения за работоспособностью различных компонентов системы (мониторинга) и "горячего" реагирования на внештатные ситуации.
mcftpd - переписанный из ftpd-BSD безопасный ftp сервер, работает под Linux и FreeBSD.
radius_stat - Система учета работы dial-up пользователей в сети.
snmp_stat - учет трафика по выделенным соединениям.
snmp_online - мониторинг активности пользователей на сервере доступа в реальном режиме времени.
apache_stat - анализатор трафика web-сервера, по логам апача.
hints - система контекстно-зависимых хинтов, см. поле баннера opennet.ru.
getstatd - небольшой httpd демон для визуализации работы пользователей в системе.

(C) by Maxim Chirkov.


  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor