В чем нарисовать схему подключения

В чем нарисовать схему подключения
В чем нарисовать схему подключения
В чем нарисовать схему подключения
В чем нарисовать схему подключения


Bacula — кроссплатформенное клиент-серверное программное обеспечение, позволяющее централизованно управлять резервным копированием, восстановлением, и проверкой данных по сети. Bacula также может работать на единственном сервере или, распределёно на нескольких, может записывать резервные копии на различные типы носителей, включая ленты, ленточные библиотеки, диски. Предлагает широкие возможности для управления хранилищами данных, облегчает поиск и восстановление потерянных или повреждённых файлов. Благодаря модульной структуре, Bacula легко масштабируемая система и может работать как в маленьких так и в крупных сетях. Дает возможность управления через CLI, GUI и веб-интерфейс.

Содержание:

Введение

Bacula разделена на несколько отдельных модулей это придает ей гибкости в работе:

  • Director (DIR) (порт 9101) — директор осуществляет централизованный контроль и администрирование всего комплекса задач. Планирование и управление заданиями на резервное копирование (Job). Обслуживание Каталога (Catalog) — центральной БД для хранения метаданных.
  • Storage Daemon (SD) (порт 9103) — сервер хранения читает и пишет данные на физический носитель: диск, ленту, DVD, USB.
  • File Daemon (FD) (порт 9102) — клиент выполняющий непосредственное копирование, восстановление и проверку данных по запросу Director. File Daemon должен быть установлен на нужной клиентской машине и он обменивается информацией с Director и Storage Daemon.
  • Console — консоль управления для администратора. Поддерживает списки ACL для разных пользователей консоли. Типы консолей: TTY, wxWidgets (GUI) для Linux, Unix, Win32, GNOME (GUI), несколько веб-интерфейсов, Qt4.
  • Catalog database — база данных для хранения метаданных SQL: MySQL, PostgreSQL, или SQLite.
  • Tray Monitor — апплет GNOME/KDE/Win32 GUI для показа активности Director, File daemons, Storage daemon в реальном времени.

Планирование

Первое, что вы должны будете сделать это понять и описать кто, что и когда будет резервироваться. В нашем примере я буду использовать три сервера.

Оборудование
  • thor.kmps.local - FreeBSD 8.2 amd64. ISC-DHCP, Web, NUT, Bacula и т.п. [DIR, SD, FD]
  • srv1.kmps.local - Windows 2003, AD, сетевые директории, DNS, SEP, WSUS, Bacula и т.п. [FD]
  • srv2.kmps.local - Windows 2003 БД 1С, Гарант, Консультант+, Bacula и т.п. [FD]

Как я сказал Bacula может быть распределена в сети и при грамотном ведении хозяйства и бюджета наша задача выглядит примерно так.

Примечание: чтобы не усложнять схему я специально убрал из неё трей-монитор, командную консоль, и БД каталога тк их можно поставить на другие машины. Пример

К слову сказать готовые ленты желательно переносить в другое здание (или помещение) тк от чрезвычайных случаев никто не застрахован. И вот еще я как и все вы живем в России обычно бюджет фирм на ИТ небольшой и приходиться выкручиваться самому так, что реальная схема часто выглядит так.

Схема резервного копирования

Для начала вам понадобится нарисовать простую таблицу примерно такого вида.

Так вы можете наглядно понять, что необходимо и как нужно сделать, дальше следуйте вашей схеме. В процессе схему можете дополнять и оптимизировать не забывая все документировать. Вы документируете свою работу ведь правда?

Типы резервного копирования

Дополнительно опишем типы резервного копирования их плюсы и минусы:

  1. Полное копирование (Full backup) - производится копирование данных в полном объеме. Самый надежный способ копирования. В случае выхода из строя свежей копии данные можно восстановить из предыдущих копий. Эффективный и быстрый метод восстановления. Недостаток - требует носителей большого объема и длительного времени выполнения.
  2. Дифференциальное копирование (Differential backup) - копируются файлы, изменившиеся после последнего Full backup. Данные копируются "нарастающим итогом", так что последняя копия всегда будет содержать все изменения с момента последнего Full backup. Выполняется быстрее чем Full backup, при повреждении одной из копий не приводит к потере всех данных за последующий и предыдущий период (при наличии живого Full backup). Так или иначе требуется регулярный Full backup и бывает что последняя копия (при длительной работе) по размеру изменений приближается к Full backup.
  3. Инкрементное копирование (Incremental backup) - выполняется копирование только информации, измененной после выполнения предыдущего Incremental backup. Это самый быстрый метод резервирования и занимает меньше всего объема, но и самый ненадежный метод. В случае повреждения одной из копий все последующие становятся шлаком. И соответственно при повреждении Full backup все становиться негодным. Восстановление данных занимает продолжительное время.

Предпочтителен Full backup но это"дорого" обходиться. Если данные не очень ценны или ресурсов мало то используйте Incremental backup. Differential backup это компромисс, но бывает что последняя копия приближается объему полного копирования так что следите за ним =). Есть еще и другие типы копирования такие как VirtualFull и Base вы можете познакомиться с ними сами.

Установка

Установка стандартна так что следуйте за белым кроликом...

# make search name=bacula-server Port: bacula-server-5.0.3 Path: /usr/ports/sysutils/bacula-server Info: The network backup solution (server) Maint: B-deps: gettext-0.18.1.1 libiconv-1.13.1_1 postgresql-client-8.3.15,1 R-deps: gettext-0.18.1.1 libiconv-1.13.1_1 postgresql-client-8.3.15,1 WWW: _http://www.bacula.org/ # cd /usr/ports/sysutils/bacula-server # make config Options for bacula-server 5.0.3 [ ] SQLITE3 Use SQLite-3 database [X] MYSQL Use MySQL database [ ] POSTGRESQL Use PostgreSQL database [ ] MTX Install mtx for control of autochanger devices [X] NLS Native Language Support via gettext utilities [X] OPENSSL Enable OpenSSL for encrypted communication # make install clean You may use the following build options (or make config): WITH_CLIENT_ONLY=yes if you only want the file daemon. WITH_MTX=yes if you want to use mtx instead of chio for autochanger control. WITH_SQLITE3=yes if you want SQLite-3 as the database (not recommended). WITH_OPENSSL=yes Enable OpenSSL for encrypted communication. ===> SECURITY REPORT: This port has installed the following files which may act as network servers and may therefore pose a remote security risk to the system. /usr/local/lib/libbac.so.5 This port has installed the following startup scripts which may cause these network services to be started at boot time. /usr/local/etc/rc.d/bacula-sd /usr/local/etc/rc.d/bacula-dir If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type 'make deinstall' to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage: http://www.bacula.org/ ===> Cleaning for bacula-server-5.0.3 База данных

Для работы Bacula Director ему необходима база данных для накопления и оперирования всевозможными данными о собранных резервных копиях. Такая база называется Каталог (Catalog) и храниться она в СУРБД (MySQL, Postgres). Каталогов может быть несколько, в зависимости от потребностей. Перед запуском, необходимо подготовить хотя бы один.
Cоздадим базу данных в MYSQL, например BACULA_DB, и пользователя имеющего полные права на эту базу данных.

# mysqladmin -uADMIN_USER -pADMIN_PASS create BACULA_DB # mysql -uADMIN_USER -pADMIN_PASS -e"GRANT ALL ON BACULA_DB. TO \ BACULA_USER@localhost IDENTIFIED BY 'BACULA_USER_PASS'" BACULA_DB
Для заполнения базы необходимыми таблицами есть готовый скрипт находящийся /usr/local/share/bacula/make_mysql_tables. В нем по умолчанию используется база данных с именем bacula. Кто использует другое имя БД для Bacula то вам необходимо внести изменение в этот скрипт и запустить его.
# /usr/local/share/bacula/make_mysql_tables -u BACULA_USER -pBACULA_USER_PASS Creation of Bacula MySQL tables succeeded.

Настройка

Необходимо создать директорию (а лучше взять новый диск для хранения резервных копий и еще лучше это использовать ленточный накопитель) куда будем писать резервные копии, и даем доступ на запись пользователю bacula и примонтируем (в моем случае) диск для бекапов:

# mkdir /home/bacula/backup # chown bacula:bacula /home/bacula/backup # mount /dev/ad6s1d /home/bacula/backup

Добавим в fstab строчку про монтирование диска (в моем случае).

# cat /etc/fstab # Device Mountpoint FStype Options Dump Pass# /dev/mirror/gm0s1b none swap sw 0 0 /dev/mirror/gm0s1a / ufs rw 1 1 /dev/mirror/gm0s1f /home ufs rw 2 2 /dev/mirror/gm0s1d /usr ufs rw 2 2 /dev/mirror/gm0s1e /var ufs rw 2 2 /dev/ad6s1d /home/bacula/backup ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 tmpfs /tmp tmpfs rw 0 0
Заметка: лучше всего монтировать сразу к корневому каталогу, а не выстраивать лесенок, так как могут быть последствия некорректного монтирования при недоступности вашей директории. Director (DIR)

Необходимо создать конфигурационные файлы для DIR и SD на основе шаблонов и отредактировать их в соответствии с желаемой конфигурацией.

# cd /usr/local/etc # ll |grep bacula -r--r--r-- 1 root wheel 949B 11 май 11:56 bacula-barcodes.samples -rw-r----- 1 root bacula 8,8K 11 май 11:56 bacula-dir.conf.sample -rw-r----- 1 root wheel 5,8K 11 май 11:56 bacula-sd.conf.sample # cp bacula-dir.conf.sample bacula-dir.conf # cp bacula-sd.conf.sample bacula-sd.conf

Разберем дефолтный конфигурационный файл DIR:

# cat bacula-dir.conf # # Дефолтный файл конфигурации Bacula Director # # Единственное, что должно быть изменено, это добавить одну или # несколько имен файлов или директорий в директиве Include # набора FileSet. # # Для Bacula релиза 5.0.3 (04 августа 2010) - FreeBSD 8.2-RELEASE # # Вы также можете изменить адрес электронной почты по умолчанию # от root до вашего адреса. См. директивы "mail" и "operator" # в ресурсах сообщения. # Director { # Определим себя Name = thor.kmps.local-dir # Имя DIRport = 9101 # Порт который слушает DIR QueryFile = "/usr/local/share/bacula/query.sql" WorkingDirectory = "/var/db/bacula" # Рабочий каталог PidDirectory = "/var/run" Maximum Concurrent Jobs = 1 # Максимальное количество # параллельных заданий. Не рекомендуется # одновременно записывать # несколько заданий в один пул. Password = "SECRET" # Пароль для анонимной консоли (фулл контрол) Messages = Daemon # Набор настроек для отправки сообщений } JobDefs { # Дефолтное задание Name = "DefaultJob" # Имя задания Type = Backup # Тип (backup, restore и т.д.) Level = Incremental # Уровень бэкапа (Full, Incremental, Differential и тп) Client = thor.kmps.local-fd # Имя клиента FileSet = "Full Set" # Набора файлов для сохранения. Schedule = "WeeklyCycle" # Расписание Storage = File # Файловое хранилище Messages = Standard # Поведение уведомлений Pool = File # Пул, куда будем писать бэкапы Priority = 10 # Приоритет. Давая заданиям приоритеты # от 1 (max) до 10 (min), можно регулировать # последовательность выполнения. Write Bootstrap = "/var/db/bacula/%c.bsr" # Файл хранит информацию откуда извлекать # данные при восстановлении } # Определим основные ночные сохранения заданий резервного копирования # По умолчанию, работа резервного копирование будет на диске в /tmp Job { Name = "BackupClient1" JobDefs = "DefaultJob" } #Job { # Name = "BackupClient2" # Client = thor.kmps.local2-fd # JobDefs = "DefaultJob" #} # Резервное копирование каталога базы данных (после ночных сохранений) Job { Name = "BackupCatalog" JobDefs = "DefaultJob" Level = Full FileSet="Catalog" Schedule = "WeeklyCycleAfterBackup" # Это создает копию ASCII из каталога # Аргументы make_catalog_backup.pl являются: # make_catalog_backup.pl <catalog-name> RunBeforeJob = "/usr/local/share/bacula/make_catalog_backup.pl MyCatalog" # Это удаляет копию каталога RunAfterJob = "/usr/local/share/bacula/delete_catalog_backup" Write Bootstrap = "/var/db/bacula/%n.bsr" Priority = 11 # после основного резервного копирования } # # Стандартный шаблон восстановления, который может изменен консольной программой # Только одна такая работа необходима для всех Работа/Клиентов/Хранилищ... # [единственное я изменил путь к Where для клиента thor.kmps.local-fd # это куда Bacula будет складывать восстановленные из архивов файлы] Job { Name = "RestoreFiles" Type = Restore Client=thor.kmps.local-fd FileSet="Full Set" Storage = File Pool = Default Messages = Standard #Where = /tmp/bacula-restores Where = /home/bacula/bacula-restores } # Список файлов для резервного копирования FileSet { # Список файлов Name = "Full Set" # Имя списка файлов Include { Options { signature = MD5 # Тип сигнатур MD5\SHA1 } # # Поместить список файлов, вы можете предшествует 'File =', по одному на строку # или включить внешний список: # # File = <file-name # # Обратите внимание: "/" резервное копирование всего корневого раздела. # если у вас есть другие разделы, такие как "/usr" / или "/home" # вероятно, вы захотите, чтобы добавить их тоже. # # По умолчанию это определяется, чтобы указать для Bacula бинарный # каталог, чтобы дать набор файлов для резервного копирования на # диск во время начального тестирования. # File = /usr/local/sbin } # # Если вы сохраняете корневой каталог, следующие два исключения # файлов могут быть полезны # Exclude { # Исключения File = /var/db/bacula ##Исключаемые директории File = /tmp ## File = /proc ## File = /tmp ## File = /.journal ###Исключаемые файлы File = /.fsck ### } } # # Когда делать резервные копии, полную резервную копию в первое # воскресенье месяца, дифференциальный (т.е. дополнительные к полной) # каждые остальные воскресенья, так и инкрементный в другие дни. Schedule { # Планировщик Name = "WeeklyCycle" # Имя планировщика Run = Full 1st sun at 23:05 # Запуск полного бекапа в.. Run = Differential 2nd-5th sun at 23:05 # Запуск диф. бекапа в.. Run = Incremental mon-sat at 23:05 # Запуск инк. бекапа в.. } # Этот график для каталога. Он запускается после WeeklyCycle Schedule { Name = "WeeklyCycleAfterBackup" Run = Full sun-sat at 23:10 } # Это резервное копирование каталога Bacula [изменил из-за БД имя] FileSet { Name = "Catalog" Include { Options { signature = MD5 } #File = "/var/db/bacula/bacula.sql" File = "/var/db/bacula/BACULA_DB.sql" } } Client { Name = thor.kmps.local-fd # Имя клиента Address = thor.kmps.local # Адрес FDPort = 9102 # Порт на котором клиент сидит Catalog = MyCatalog # Каталог в MySQL Password = "SECRET" # пароль для FileDaemon File Retention = 30 days # 30 дней - период, на протяжении # которого в каталоге будет храниться # инфа о файлах этого клиента Job Retention = 6 months # 6 месяцев - тоже, но про задания AutoPrune = yes # Удаление истекших заданий/файлов } # # Второй клиент (File Services) для резервного копирования # Вы должны изменить имя, адрес и пароль, прежде чем использовать # #Client { # Name = thor.kmps.local2-fd # Address = localhost2 # FDPort = 9102 # Catalog = MyCatalog # Password = "SECRET" # пароль для FileDaemon 2 # File Retention = 30 days # 30 дней # Job Retention = 6 months # 6 месяцев # AutoPrune = yes # Удаление истекших заданий/файлов #} # Определение устройства хранения файлов Storage { Name = File # Имя. Используется в определениях job # Не используйте здесь "localhost" Address = thor.kmps.local # Здесь использовать полное имя SDPort = 9103 # Порт SD Password = "SECRET" # Пароль к SD Device = FileStorage # Устройство. Должно быть определено # в настройках секции Device сервера хранения Media Type = File # Файл, диск, лента } # Определение DDS ленточного устройство хранения данных #Storage { # Name = DDS-4 # Не используйте здесь "localhost" # Address = localhost # Здесь использовать полное имя # SDPort = 9103 # Порт SD # Password = "SECRET" # пароль для Storage daemon # Device = DDS-4 # должен быть таким же, как Device в Storage daemon # Media Type = DDS-4 # должен быть таким же, как MediaType в Storage daemon # Autochanger = yes # включить для авточейнджера устройства #} # Определение 8мм устройства хранения ленты #Storage { # Name = "8mmDrive" # Не используйте здесь "localhost" # Address = localhost # SDPort = 9103 # Password = "SECRET" # Device = "Exabyte 8mm" # MediaType = "8mm" #} # Определение DVD накопителя #Storage { # Name = "DVD" # Не используйте здесь "localhost" # Address = localhost # SDPort = 9103 # Password = "SECRET" # Device = "DVD Writer" # MediaType = "DVD" #} # Службы общего каталога Catalog { Name = MyCatalog # Раскомментируйте следующую строку, если вы хотите использовать dbi драйвера # dbdriver = "dbi:mysql"; dbaddress = 127.0.0.1; dbport = dbdriver = "dbi:mysql"; dbaddress = 127.0.0.1; dbport = 3306 dbname = "kmps_bacula"; dbuser = "kmps_bacula"; dbpassword = "PASSWORD" } # Умеренная доставки сообщения - отправить большинство сообщений на адрес # электронной почты и консоль Messages { Name = Standard # # ПРИМЕЧАНИЕ! Если вы отправляете на два почтовых адреса или более # адресов электронной почты, необходимо будет заменить %r в поле # (-f части) с одиним действительным адресом электронной почты в # обоих mailcommand, так и operatorcommand. Что это делает, он # устанавливает адрес электронной почты, сообщения электронной почты # будет отображаться в поле «ОТ», который является по умолчанию # такое же письмо, как они его передали. Однако если вы отправляете # сообщение на более чем один адрес, то вам придется вручную, # установить адреса на один адрес. Например, «», # лучше так, что стремится сказать (большинству) людей, которые # его получат с автоматизированного источника рассылки сообщений. mailcommand = "/usr/local/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" / -s \"Bacula: %t %e of %c %l\" %r" operatorcommand = "/usr/local/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" / -s \"Bacula: Intervention needed for %j\" %r" mail = root@localhost = all, !skipped operator = root@localhost = mount console = all, !skipped, !saved # # ВНИМАНИЕ! Переменная указанная ниже создаст файл, который вам # нужно будет ротировать newsyslog'ом Однако, он также будет # держать все ваши сообщения, если они просматриваются # с консоли. append = "/var/db/bacula/log" = all, !skipped catalog = all } # # Доставка сообщений для демона сообщений (не работы). Messages { Name = Daemon mailcommand = "/usr/local/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" / -s \"Bacula daemon message\" %r" mail = root@localhost = all, !skipped console = all, !skipped, !saved append = "/var/db/bacula/log" = all, !skipped } # Определение пула по умолчанию # Pool - отдельное описание для каждого набора томов (лент, DVD, файлов) # используется при описании задания для указания пула из которого # должен быть взят том. В каждый пул может входить несколько томов. Pool { # Пул Name = Default # Имя пула Pool Type = Backup # Тип пула Recycle = yes # Bacula может автоматически рециркулировать тома (Volumes) AutoPrune = yes # Удалять из каталога записи о файлах и # заданиях, срок хранения которых истёк в # соответствии с Volume Retention, # при поиске доступного на запись тома. Volume Retention = 365 days # Через один год } # Определения пула файлов Pool { # Пул Name = File # Имя пула Pool Type = Backup # Тип пула Recycle = yes # Bacula может автоматически рециркулировать тома (Volumes) AutoPrune = yes # Удаление истекших томов (Volumes) Volume Retention = 365 days # через один год Maximum Volume Bytes = 50G # Ограничение размера тома Maximum Volumes = 100 # Ограничить количество томов в пуле } # Определения пула Scratch # Scratch зарезервировано для пула запасных том - при необходимости # система самостоятельно переводит том из него в требуемый пул Pool { Name = Scratch Pool Type = Backup } # # Ограниченная консоль, используемая в трей мониторе для получения # статуса директора DIR # Console { Name = thor.kmps.local-mon Password = "SECRET" CommandACL = status, .status } # Свои конфигурационные файлы #@/usr/local/etc/client_schedule.conf @/usr/local/etc/client_thor.conf @/usr/local/etc/client_srv1.conf @/usr/local/etc/client_srv2.conf
Как вы заметили, я включил несколько конфигурационных файлов клиентов в конец файла конфигурации DIR, но об этом чуть позже. Последовательность действий

Что бы эффективно управлять системой резервного копирования, нужно как следует подумать и попрактиковаться, пока не придет понимание как эта система работает. В конфигурационном файле вы должны описать к примеру работу для одного клиента несколькими переменными такими как Job, Storage, Pool, Client, FileSet, Schedule. Каждой переменной присваивается понятное имя и далее в Job указываются необходимые имена переменных чтобы это было законченной задачей и могло работать согласно вашим указаниям. Рабочий клиент состоит из 6ти элементов:

  • Job (Работа) - это объект которому присваивают понятное имя и это совокупность вещей и указаний как, кого, что и куда будем резервировать. По его имени эту задачу можно определять, исполнять и вызывать из консоли.
  • Client (Клиент) - здесь указывается имя клиента для этой работы, сам клиент и его имя определяется отдельно.
  • FileSet (Набор файлов) - указывается набор файлов\директорий и их исключений для этой работы, сам набор файлов и его имя определяется отдельно.
  • Schedule (Планировщик) - планировщик для этой работы, в нем описываем периодичность работы и перераспределение ресурсов это когда делать полное копирование когда дифференциальное и тд. Сам планировщик и его имя определяется отдельно и вы можете для удобства завести отдельный конфиг.
  • Storage (Хранилище) - Определение устройства хранения файлов для этой работы. В этом хранилище есть секция Device (см по имени) в котором есть указание, где будем хранить резервные копии.
  • Pool (Пул) - определяем для работы нужный нам Пул это отдельное описание для каждого набора томов (лент, DVD, файлов)

Примечание: Все переменные вы можете использовать в различных комбинациях указав нужное имя в нужной работе к примеру Schedule с именем Weekly_1st можете использовать в разных работах которым необходимо одинаковое время и периодичность работ.

Свои конфигурационные файлы

Создадим дополнительные конфигурационный файлы для трех серверов и включим их в bacula-dir.conf.
Клиент THOR

# cat client_thor.conf # Клиент Thor # Создаем задание thor_backup-job и указываем ресурсы. Job { Name = "thor_backup-job" # Имя задания Type = Backup # Тип (backup, restore и т.д.) Level = Full # Уровень бэкапа Client = thor-fd # Имя клиента FileSet = "thor-fileset" # Набора файлов для сохранения. Schedule = "Month-1hrs-sun" # Расписание Storage = backup-disk1 # Файловое хранилище Messages = Daemon # Поведение уведомлений Pool = thor-pool # Пул, куда будем писать бэкапы Priority = 10 # Приоритет. Давая заданиям приоритеты # от 1 до 10, можно регулировать # последовательность выполнения. Write Bootstrap = "/var/db/bacula/thor_backup-job.bsr" } # Определяем список резервируемых файлов FileSet { Name = "thor-fileset" # Имя списка Include { Options { signature = MD5 } File = /etc # Указываем каталоги, который будем бэкапить File = /home/Raven2000 } Exclude { # Исключим пару каталогов File = /home/Raven2000/www/tmp File = /home/Raven2000/www/log } } # Pool - описание набора устройств хранение # В каждый пул будет входить несколько томов. Регулировать, в какой конкретно # том бакула будет писать задание нельзя. Я хотел, чтобы каждое задание # у меня писалось в отдельный файл, поэтому на каждый backup job у меня # будет отдельный пул. Pool { Name = thor-pool # Имя пула Pool Type = Backup # Тип пула Recycle = yes # Автоматически менять тома. AutoPrune = yes # Автоматическое удаление из БД заданий с # истекшим сроком годности. Volume Retention = 365 days # Срок, по истечении которого тома будут # удаляться из пула. Maximum Volume Bytes = 50G # Ограничение размера тома Maximum Volumes = 100 # Ограничить количество томов в пуле Label Format = "thor-" # Шаблон для создания имени тома при # автоматическом создании метки тома # требует указания Label Media в # настройках сервера хранения. Recycle Oldest Volume = yes # Удаляем старые копии при нехватке места для новых } # Определения клиентов Client { Name = thor-fd # Имя клиента Address = thor.kmps.local # адрес FDPort = 9102 # Порт, на котором клиент нас ждет Catalog = "MyCatalog" # Каталог в MySQL Password = "SECRET" # Пароль к клиенту File Retention = 30 days # Период, на протяжении которого в каталоге # будет храниться инфа о файлах этого клиента Job Retention = 3 months # То же, только о заданиях этого клиента AutoPrune = yes # Удалять из каталога # данные о файлах и заданиях, срок хранения # которых истек. } # Определения файловых хранилищ. Storage { Name = backup-disk1 # Имя хранилища будет использоваться в # определениях job Address = thor.kmps.local # Адрес сервера хранения. Настоятельно не # рекомендуется использовать localhost SDPort = 9103 # Порт, где file storage нас ждет Password = "SECRET" # Пароль к нему Device = backup-disk1 # Устройство. Должно быть определено # в настройках секции Device сервера хранения Media Type = File # Файл, диск, лента и т.д. } # Планировщик Schedule { Name = "Month-1hrs-sun" Run = Full 1st sun at 1:00 Run = Differential 2nd-5th sun at 1:00 Run = Incremental mon-sat at 1:00 }

Клиент SRV1

# cat client_srv1.conf # Клиент SRV1 # Создаем задание srv1_backup-job и указываем ресурсы. Job { Name = "srv1_backup-job" Type = Backup Level = Full Client = srv1-fd FileSet = "srv1-fileset" Schedule = "Month-1hrs-sun-srv1" Storage = File-SRV1 Messages = Daemon Pool = srv1-pool Priority = 10 Write Bootstrap = "/var/db/bacula/srv1_backup-job.bsr" } FileSet { Name = "srv1-fileset" Enable VSS = YES # Использовать Volume Shadow Copy Service (VSS) для клиента Win32 # VSS позволяет Bacula копировать открытых файлы Include { Options { compression = GZIP # Сжатие производится на стороне клиента пофайлово в один поток signature = MD5 # Тип сигнатур MD5\SHA1 portable = no # переносимый формат сохраняет не все атрибуты NTFS noatime = yes # Позволяет читать файлы без изменения времён atime и ctime checkfilechanges = yes # Выдаётся предупреждение, если размер или время # модификации файла изменяется при резервном копировании Ignore Case = yes # Игнор-ть регистр букв при сопост-и шаблонов и рег-х выражений wildfile = ".avi" # Шаблон wildfile = ".wmv" # Шаблон wildfile = ".mp3" # Шаблон wildfile = "pagefile.sys" # Шаблон wildfile = "hiberfil.sys" # Шаблон wilddir = "System Volume Information" # Шаблон wilddir = "TEMP" # Шаблон exclude = yes # Подошедшие под шаблоны файлы исключаются из списка } File = "D:/Shared_buch" # Что резервируем File = "E:/Backup/Windows" # Что резервируем } } Pool { Name = srv1-pool Pool Type = Backup Recycle = yes AutoPrune = yes Volume Retention = 365 days Maximum Volume Bytes = 50G Maximum Volumes = 100 Recycle Oldest Volume = yes # Удаляем старые копии при нехватке места для новых Label Format = "srv1-" # Шаблон для создания имени тома при # автоматическом создании метки тома # требует указания Label Media в # настройках сервера хранения. } Client { Name = srv1-fd Address = srv1.kmps.local FDPort = 9102 Catalog = MyCatalog Password = "QbTQzNv/823/spZGTu4buOxFuKT/tiBfg+ZlESr3R1lU" File Retention = 30 days Job Retention = 6 months AutoPrune = yes } Storage { Name = File-SRV1 Address = thor.kmps.local SDPort = 9103 Password = "SECRET" Device = FileStorage-srv1 Media Type = File } Schedule { Name = "Month-1hrs-sun-srv1" Run = Full 1st sun at 3:00 Run = Differential 2nd-5th sun at 3:00 Run = Incremental mon-sat at 3:00 }

Клиент SRV2

# cat client_srv2.conf # Клиент SRV2 # Создаем задание srv2_backup-job и указываем ресурсы. Job { Name = "srv2_backup-job" Type = Backup Level = Full Client = srv2-fd FileSet = "srv2-fileset" Schedule = "Month-1hrs-sun" Storage = backup-disk1 Messages = Daemon Pool = srv2-pool Priority = 10 Write Bootstrap = "/var/db/bacula/srv2_backup-job.bsr" } FileSet { Name = "srv2-fileset" Enable VSS = YES Include { Options { compression = GZIP signature = MD5 portable=no noatime = yes checkfilechanges = yes Ignore Case = yes wildfile = ".avi" wildfile = ".wmv" wildfile = ".mp3" wildfile = "pagefile.sys" wildfile = "hiberfil.sys" wilddir = "System Volume Information" wilddir = "TEMP" exclude = yes } File = "D:/1SBase" File = "E:/Backup/Windows" } } Pool { Name = srv2-pool Pool Type = Backup Recycle = yes AutoPrune = yes Volume Retention = 365 days Maximum Volume Bytes = 50G Maximum Volumes = 100 Recycle Oldest Volume = yes # Удаляем старые копии при нехватке места для новых Label Format = "srv2-" # Шаблон для создания имени тома при # автоматическом создании метки тома # требует указания Label Media в # настройках сервера хранения. } Client { Name = srv2-fd Address = srv2.kmps.local FDPort = 9102 Catalog = MyCatalog Password = "MkfdcfGqds5qFoSL/W2uBG0DqIvY5bbVDWq/ZuHN39Ct" File Retention = 30 days Job Retention = 6 months AutoPrune = yes } Storage { Name = File-SRV2 Address = thor.kmps.local SDPort = 9103 Password = "SECRET" Device = FileStorage-srv2 Media Type = File } Schedule { Name = "Month-1hrs-sun-srv2" Run = Full 1st sun at 6:00 Run = Differential 2nd-5th sun at 6:00 Run = Incremental mon-sat at 6:00 }


Заметка: привыкайте делать включения в основной конфигурационный файл так будет аккуратней и проще в работе и эксплуатации.
Включим ваши конфиги в конец файла bacula-dir.conf

# cat bacula-dir.conf |grep client #@/usr/local/etc/client_schedule.conf @/usr/local/etc/client_thor.conf @/usr/local/etc/client_srv1.conf @/usr/local/etc/client_srv2.conf

Протестируем конфигурационный файл

# bacula-dir -t -d /usr/local/etc/bacula-dir.conf # bacula-dir -t -d /usr/local/etc/client_thor.conf # bacula-dir -t -d /usr/local/etc/client_srv1.conf # bacula-dir -t -d /usr/local/etc/client_srv2.conf
Если шибок не выдало значит все в порядке. Storage Daemon (SD) # vi bacula-sd.conf # # Дефолтный файл конфигурации Bacula Storage Daemon # # Для Bacula релиза 5.0.3 (04 августа 2010) — FreeBSD 8.2-RELEASE # # Может потребоваться изменить имя вашего накопителя в директиве # «Archive Device» в устройство ресурсов. Если изменить имя и/или # «Тип носителя» в ресурсе устройства, убедитесь, что bacula-dir.conf # имеет соответствующие изменения. # Storage { # Определим себя Name = thor.kmps.local-sd # Имя SDPort = 9103 # Порт, где ждать директора WorkingDirectory = "/var/db/bacula" Pid Directory = "/var/run" # Собственно PID Maximum Concurrent Jobs = 20 # Дополнительные ограничения } # # Список директоров, которым разрешается связаться с Демоном хранения (SD) # Director { Name = thor.kmps.local-dir # Имя директора Password = "SECRET" # Пароль } # # Ограниченный директор, используемые в трей мониторе # для получения статуса демона хранения # Director { Name = thor.kmps.local-mon # Имя директора Password = "SECRET" # Пароль Monitor = yes } # # Примечание, список дополнительных шаблонов устройств смотрите в # каталоге <bacula-source>/examples/devices # Или перейдите по следующей ссылке: # _http://bacula.svn.sourceforge.net/viewvc/bacula/trunk/bacula/examples/devices/ # # # Устройства записи, поддерживаемые данным Демоном хранения (SD) # это жесткий диск, ленточный накопитель, dvd. # Для подключения, устройства к директору в bacula-dir.conf # должны иметь то же Name и MediaType. # Device { Name = FileStorage # Имя Media Type = File # Укажем, что будем бекапить Archive Device = /tmp # Каталог для бекапов LabelMedia = yes; # разрешить Bacula размечать тома Random Access = Yes; AutomaticMount = yes; # когда устройство открыто, читать его RemovableMedia = no; AlwaysOpen = no; } # # Авточенджер с двумя дисками # #Autochanger { # Name = Autochanger # Device = Drive-1 # Device = Drive-2 # Changer Command = "/usr/local/share/bacula/mtx-changer %c %o %S %a %d" # Changer Device = /dev/sg0 #} #Device { # Name = Drive-1 # # Drive Index = 0 # Media Type = DLT-8000 # Archive Device = /dev/nst0 # AutomaticMount = yes; # когда устройство открыто, читать его # AlwaysOpen = yes; # RemovableMedia = yes; # RandomAccess = no; # AutoChanger = yes # # # # Включить команду Alert, только если у вас есть MTX пакет загрузки # # Обратите внимание, по-видимому, в некоторых системах, tapeinfo # # сбрасывает контроллер SCSI. Tаким образом если вы включаете это, # # убедитесь, что он не сбрасывает ваш контроллер SCSI. У меня # # никогда не было каких-либо проблем, и smartctl, по-видимому, # # не вызывают таких проблем. # # # Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" # Если у вас есть smartctl, то он имеет больше информации, чем tapeinfo # Alert Command = "sh -c 'smartctl -H -l error %c'" #} #Device { # Name = Drive-2 # # Drive Index = 1 # Media Type = DLT-8000 # Archive Device = /dev/nst1 # AutomaticMount = yes; # когда устройство открыто, читать его # AlwaysOpen = yes; # RemovableMedia = yes; # RandomAccess = no; # AutoChanger = yes # # Включить команду оповещения, только если у вас есть MTX пакет загрузки # Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" # Если у вас есть smartctl, то он имеет больше информации, чем tapeinfo # Alert Command = "sh -c 'smartctl -H -l error %c'" #} # # Linux или Solaris LTO-2 ленточный накопитель # #Device { # Name = LTO-2 # Media Type = LTO-2 # Archive Device = /dev/nrsa0 # AutomaticMount = yes; # когда устройство открыто, читать его # AlwaysOpen = yes; # RemovableMedia = yes; # RandomAccess = no; # Maximum File Size = 3GB ## Changer Command = "/usr/local/share/bacula/mtx-changer %c %o %S %a %d" ## Changer Device = /dev/sg0 ## AutoChanger = yes # # Включить команду оповещения, только если у вас есть MTX пакет загрузки ## Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" ## Если у вас есть smartctl, то он имеет больше информации, чем tapeinfo ## Alert Command = "sh -c 'smartctl -H -l error %c'" #} # # Linux или Solaris LTO-3 ленточный накопитель # #Device { # Name = LTO-3 # Media Type = LTO-3 # Archive Device = /dev/nrsa0 # AutomaticMount = yes; # когда устройство открыто, читать его # AlwaysOpen = yes; # RemovableMedia = yes; # RandomAccess = no; # Maximum File Size = 4GB ## Changer Command = "/usr/local/share/bacula/mtx-changer %c %o %S %a %d" ## Changer Device = /dev/sg0 ## AutoChanger = yes # # Включить команду оповещения, только если у вас есть MTX пакет загрузки ## Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" ## Если у вас есть smartctl, то он имеет больше информации, чем tapeinfo ## Alert Command = "sh -c 'smartctl -H -l error %c'" #} # # Linux или Solaris LTO-4 ленточный накопитель # #Device { # Name = LTO-4 # Media Type = LTO-4 # Archive Device = /dev/nrsa0 # AutomaticMount = yes; # когда устройство открыто, читать его # AlwaysOpen = yes; # RemovableMedia = yes; # RandomAccess = no; # Maximum File Size = 5GB ## Changer Command = "/usr/local/share/bacula/mtx-changer %c %o %S %a %d" ## Changer Device = /dev/sg0 ## AutoChanger = yes # # Включить команду оповещения, только если у вас есть MTX пакет загрузки ## Alert Command = "sh -c 'tapeinfo -f %c |grep TapeAlert|cat'" ## Если у вас есть smartctl, то он имеет больше информации, чем tapeinfo ## Alert Command = "sh -c 'smartctl -H -l error %c'" #} # # FreeBSD ленточный накопитель # #Device { # Name = DDS-4 # Description = "DDS-4 for FreeBSD" # Media Type = DDS-4 # Archive Device = /dev/nsa1 # AutomaticMount = yes; # когда устройство открыто, читать его # AlwaysOpen = yes # Offline On Unmount = no # Hardware End of Medium = no # BSF at EOM = yes # Backward Space Record = no # Fast Forward Space File = no # TWO EOF = yes # IIf you have smartctl, enable this, it has more info than tapeinfo # Alert Command = "sh -c 'smartctl -H -l error %c'" #} # # Передать все сообщения директора, mount сообщения # также отправляются на адрес электронной почты # Messages { # Будем отправлять все сообщения DIR Name = Standard director = thor.kmps.local-dir = all }

Теперь соберем свой конфигурационный файл:

# cat bacula-sd.conf | grep -v ^# Storage { Name = thor.kmps.local-sd SDPort = 9103 WorkingDirectory = "/var/db/bacula" Pid Directory = "/var/run" Maximum Concurrent Jobs = 20 } Director { Name = thor.kmps.local-dir Password = "SECRET" } Director { Name = thor.kmps.local-mon Password = "SECRET" Monitor = yes } Device { Name = FileStorage Media Type = File Archive Device = /home/bacula/backup #Archive Device = /tmp LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = no; } Device { Name = backup-disk1 Media Type = File Archive Device = /home/bacula/backup LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = no; } Device { Name = FileStorage-srv1 Media Type = File Archive Device = /home/bacula/SRV1 LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = no; } Device { Name = FileStorage-srv2 Media Type = File Archive Device = /home/bacula/SRV2 LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = no; } Messages { Name = Standard director = thor.kmps.local-dir = all }

Протестируем

# bacula-sd -t /usr/local/etc/bacula-sd.conf
Ничего не выдало значит все в порядке. Console

Настроим консоль

# cd /usr/local/etc # cp bconsole.conf.sample bconsole.conf # cat bconsole.conf # # Bacula User Agent (or Console) Configuration File # Director { Name = thor.kmps.local-dir DIRport = 9101 address = localhost Password = "SECRET" }

Посмотрим, что она может и отработаем несколько операций:

# /usr/local/sbin/bconsole Connecting to Director localhost:9101 1000 OK: thor.kmps.local-dir Version: 5.0.3 (04 August 2010) Enter a period to cancel a command. help Command Description ======= =========== add Добавить новый том к пулу в каталоге; для форматирования тома используйте команду label autodisplay Выдаётся извещение о наличии новых сообщений от директора automount Лента монтируется автоматически после форматирования командой label cancel Отменить задание create Создать запись Пула в БД из описания ресурса в файле delete Удалить из каталога информацию о задании, томе или пуле вместе со всеми зависимостями disable Запретить автоматическое планирование работы задания enable Разрешить автоматическое планирование работы задания estimate Считает приблизительный объём сохраняемых данных до сжатия, листинг дает полный список exit Прекращение сессии Bconsole gui Не интерактивный режим gui help Печать справки по определенной команде label Добавить новый том к пулу в БД и форматировать том; предварительно может потребоваться размонтировать ленту; если лента уже отформатирована, то требуется выполнить команды purge и relabel list Список объектов из каталога БД llist Полный или длинный список, как список команд messages вывести накопившиеся сообщения от директора memory Вывести текущее использование памяти DIR mount Монтировать хранилище prune Удалить из БД информацию о файлах, заданиях или томах с истёкшим сроком хранения и всё с нею связанное purge Очистка записей из каталога о файлах, заданиях или томах с истёкшим сроком хранения и всё с нею связанное python Команда управления Python quit Прекращение сессии Bconsole query Запрос каталога restore Восстановить файлы relabel Заново отформатировать старый том (должен быть в состоянии Purged или Recycle) release перемотать ленту (перед следующим использованием заново прочесть метку) reload Перечитать заново конфигурационный файл bacula-dir.conf run Запустить задание\работу status Отчет о состоянии setdebug Устанавить уровень отладки setip Установить новый адрес клиента - если рзрешено show Показать текущее значение ресурсов файла настройки sqlquery Использование SQL для запроса каталога time Показать текущее временя trace Включение / выключение трассировки в файл unmount Размонтирование хранилища umount Размонтировать - для старых Unix парней, см. unmount =) update Обновить информацию томов, пула или статистики use Использовать каталог xxx var Подстановка переменных version Показать версию DIR wait Ждать завершения задания В режиме ввода команд, введите точку что бы отменить командный режим Вам сообщение. Работа с Томами

Добавим новый том и отформатируем его (это при условии что вы не выставили в Pool, Label Format = "ИМЯ_ТОМА" при этом том автоматически форматируется и добавляется). Для этого выберем нужный SD (backup-disk1) укажем название Тома (как он будет сохраняться на HDD) и выберем нужный Пул.

# bconsole Connecting to Director localhost:9101 1000 OK: thor.kmps.local-dir Version: 5.0.3 (04 August 2010) Enter a period to cancel a command. label Automatically selected Catalog: MyCatalog Using Catalog "MyCatalog" The defined Storage resources are: 1: File 2: backup-disk1 3: File-SRV1 4: File-SRV2 Select Storage resource (1-4): 3 Enter new Volume name: srv1_volume Defined Pools: 1: Default 2: Scratch 3: thor-pool 4: File 5: srv2-pool 6: srv1-pool Select the Pool (1-6): 6 Connecting to Storage daemon File-SRV1 at thor.kmps.local:9103 ... Sending label command for Volume "srv1_volume" Slot 0 ... 3000 OK label. VolBytes=213 DVD=0 Volume="srv1_volume" Device="FileStorage-srv1" (/home/bacula/SRV1) Catalog record for Volume "srv1_volume", Slot 0 successfully created. Requesting to mount FileStorage-srv1 ... 3906 File device "FileStorage-srv1" (/home/bacula/SRV1) is always mounted. You have messages. label The defined Storage resources are: 1: File 2: backup-disk1 3: File-SRV1 4: File-SRV2 Select Storage resource (1-4): 4 Enter new Volume name: srv2_volume Defined Pools: 1: Default 2: Scratch 3: thor-pool 4: File 5: srv2-pool 6: srv1-pool Select the Pool (1-6): 5 Connecting to Storage daemon File-SRV2 at thor.kmps.local:9103 ... Sending label command for Volume "srv2_volume" Slot 0 ... 3000 OK label. VolBytes=213 DVD=0 Volume="srv2_volume" Device="FileStorage-srv2" (/home/bacula/SRV2) Catalog record for Volume "srv2_volume", Slot 0 successfully created. Requesting to mount FileStorage-srv2 ... 3906 File device "FileStorage-srv2" (/home/bacula/SRV2) is always mounted. label The defined Storage resources are: 1: File 2: backup-disk1 Select Storage resource (1-2): 2 Enter new Volume name: thor_volume Defined Pools: 1: Default 2: File 3: Scratch 4: thor-pool Select the Pool (1-4): 4 Connecting to Storage daemon backup-disk1 at thor.kmps.local:9103 ... Sending label command for Volume "thor_volume" Slot 0 ... 3000 OK label. VolBytes=213 DVD=0 Volume="thor_volume" Device="backup-disk1" (/home/bacula/backup) Catalog record for Volume "thor_vol", Slot 0 successfully created. Requesting to mount backup-disk1 ... 3906 File device "backup-disk1" (/home/bacula/backup) is always mounted.

Как видим создался Том thor_volume

# ll /home/bacula/backup/ total 8450 -rw-r----- 1 bacula bacula 8,2M 17 май 23:50 FileDefault -rw-r----- 1 bacula bacula 213B 18 май 14:59 thor_volume File Daemon (FD) UNIX клиент

Установим клиента на UNIX машине:

# cd /usr/ports/sysutils/bacula-client # make config Options for bacula-client 5.0.3 [ ] WXCONSOLE Build with wxGTK based GUI console: deprecated [ ] SFDAEMON Build with staticly compiled file daemon [X] NLS Native Language Support via gettext utilities [X] OPENSSL Enable OpenSSL for encrypted communication # make install clean ################################################################################ NOTE: Sample files are installed in /usr/local/etc: bconsole.conf.sample, bacula-barcodes.sample, bacula-fd.conf.sample Please read this file: /usr/local/share/doc/bacula/ReleaseNotes as installed by docs port for the upgrade procedure. Read the ReleaseNotes for further information. ################################################################################ ===> Running ldconfig /sbin/ldconfig -m /usr/local/lib ===> Registering installation for bacula-client-5.0.3 ===> SECURITY REPORT: This port has installed the following files which may act as network servers and may therefore pose a remote security risk to the system. /usr/local/lib/libbac.so.5 This port has installed the following startup scripts which may cause these network services to be started at boot time. /usr/local/etc/rc.d/bacula-fd If there are vulnerabilities in these programs there may be a security risk to the system. FreeBSD makes no guarantee about the security of ports included in the Ports Collection. Please type 'make deinstall' to deinstall the port if this is a concern. For more information, and contact details about the security status of this software, see the following webpage: http://www.bacula.org/ ===> Cleaning for bacula-client-5.0.3
Скопируем конфигурационный файл и изменим его настройки.
# cp /usr/local/etc/bacula-fd.conf.sample /usr/local/etc/bacula-fd.conf

Разберемся что внутри:

#cat/usr/local/etc/bacula-fd.conf # # Дефолтный файл конфигурации Bacula File Daemon # # Для Bacula релиза 5.0.3 (04 августа 2010) — FreeBSD 8.2-RELEASE # # Тут не так много, чтобы менять здесь, за исключением, возможно, # Имени File Daemon # # #Список директоров, которым разрешено связаться с этим File Daemon # Director { Name = thor.kmps.local-dir Password = "sIad48UBgVYD2gNAh6mRWKahMFtzjwRWNjtL8p28ma3Z" } # # Ограничение директора, используемого в tray-monitor, # для получения статуса File Daemon # Director { Name = thor.kmps.local-mon Password = "GkSSv/HoUCX7Y7Pi5m62xRD0cnykZnzaYTinCqdhM8t3" Monitor = yes } # # "Глобальные" спецификации конфигурации File daemon # FileDaemon { # Определим FD Name = thor.kmps.local-fd # Имя FD FDport = 9102 # Где слушать директора WorkingDirectory = /var/db/bacula Pid Directory = /var/run Maximum Concurrent Jobs = 20 # Максимальное кол-во заданий } # Отправить все сообщения, за исключением пропущенных файлов # обратно Директору Messages { Name = Standard director = thor.kmps.local-dir = all, !skipped, !restored

Теперь соберем свой конфигурационный файл:

# cat bacula-fd.conf | grep -v ^# Director { Name = thor.kmps.local-dir Password = "SECRET" } Director { Name = thor.kmps.local-mon Password = "SECRET" Monitor = yes } FileDaemon { Name = thor.kmps.local-fd FDport = 9102 WorkingDirectory = /var/db/bacula Pid Directory = /var/run Maximum Concurrent Jobs = 20 } Messages { Name = Standard director = thor.kmps.local-dir = all, !skipped, !restored }

Проверим на наличие ошибок и добавим в rc.conf для запуска при старте ОС.

# bacula-fd -t -d /usr/local/etc/bacula-fd.conf # echo 'bacula_fd_enable="YES"' >> /etc/rc.conf # /usr/local/etc/rc.d/bacula-fd start Starting bacula_fd. # sockstat | grep bacula root bacula-fd 9295 3 tcp4 :9102 : bacula bacula-sd 97221 3 tcp4 :9103 : bacula bacula-dir 97212 4 tcp4 :9101 : Windows клиент

Загружаем программу клиент Win32_64 и запускаем установку программы там указываем следующее.

Тип установки:
Instalation Type: Automatic (так же вы можете поставить только fd без консоли и доков.)

Указываем характеристики DIR:
DIR name: thor.kmps.local-dir
DIR Password: SECRET
DIR Adress: thor.kmps.local

В конце установки предложили сохранить файл C:\srv2-fd.conf такого содержания:

# Client (File Services) to backup Client { Name = srv2-fd Address = srv2.kmps.local FDPort = 9102 Catalog = MyCatalog Password = "MkfdcfGqds5qFoSL/W2uBG0DqIvY5bbVDWq/ZuHN39Ct" # password for FileDaemon File Retention = 30 days # 30 days Job Retention = 6 months # six months AutoPrune = yes # Prune expired Jobs/Files }
Вы можете эту информацию с последующим изменением пароля копировать в файл конфигурации сервера DIR, где формируется работа по этому клиенту. После корректной установки FD в Windows становиться службой и в трее висит монитор клиента, где можно посмотреть статус.

Запуск

Для автоматического запуска DIR, SD и FD сервисов при запуске сервера необходимо добавить строчки в /etc/rc.conf:

# echo 'bacula_dir_enable="YES"' >> /etc/rc.conf # echo 'bacula_sd_enable="YES"' >> /etc/rc.conf # echo 'bacula_fd_enable="YES"' >> /etc/rc.conf

Запуск сервисов:

# /usr/local/etc/rc.d/bacula-dir.sh start # /usr/local/etc/rc.d/bacula-sd.sh start # /usr/local/etc/rc.d/bacula-fd start # ps -ax | grep bacula 2060 ?? Is 0:00,19 /usr/local/sbin/bacula-fd -u root -g wheel -v -c /usr/local/etc/bacula-fd.conf 56766 ?? Is 0:19,37 /usr/local/sbin/bacula-sd -u bacula -g bacula -v -c /usr/local/etc/bacula-sd.conf 61339 ?? Ss 0:00,14 /usr/local/sbin/bacula-dir -u bacula -g bacula -v -c /usr/local/etc/bacula-dir.conf 64965 0 S+ 0:00,00 grep bacula # sockstat | grep bacula bacula bacula-dir 61339 5 tcp4 :9101 : bacula bacula-dir 61339 6 dgram -> /var/run/log bacula bacula-sd 56766 4 tcp4 :9103 : root bacula-fd 2060 3 tcp4 :9102 :

Сохранение данных

Автоматическое сохранение данных уже настроено и поэтому вы должны следить чтобы все работы шли без ошибок, проверять оставшееся место на HDD. Если вы выполните команду run без параметров она вам выдаст все созданные задачи и вы можете выбрать и запустить нужную. Вы можете сразу запустить нужную задачу с указанным именем задачи run job=имя-задания.

run A job name must be specified. The defined Job resources are: 1: BackupClient1 2: BackupCatalog 3: RestoreFiles 4: thor_backup-job 5: srv1_backup-job 6: srv2_backup-job Select Job resource (1-6): 6 Run Backup job JobName: srv2_backup-job Level: Full Client: srv2-fd FileSet: srv2-fileset Pool: srv2-pool (From Job resource) Storage: File-SRV2 (From Job resource) When: 2011-05-20 23:56:51 Priority: 10 OK to run? (yes/mod/no): yes Job queued. JobId=79
Проверим выполнение задачи и объем на HDD
status dir thor.kmps.local-dir Version: 5.0.3 (04 August 2010) amd64-portbld-freebsd8.2 freebsd 8.2- Daemon started 20-май-11 23:32, 5 Jobs run since started. Heap: heap=0 smbytes=102,439 max_bytes=237,812 bufs=365 max_bufs=395 Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 75 Full 831 717.5 M OK 20-май-11 23:34 srv1_backup-job 76 831 800.9 M OK 20-май-11 23:39 RestoreFiles 77 1 6.825 K OK 20-май-11 23:44 RestoreFiles 78 1 6.825 K OK 20-май-11 23:48 RestoreFiles 79 Full 109 29.67 M OK 20-май-11 23:57 srv2_backup-job ====
Все в порядке как мы видим задача выполнена ему присвоен JobId=79 сохранено файлов 109 общим обьемом 29 Мб.

Восстановление

И так с имитируем следующую ситуацию потеря\удаления файла\директории. Восстановим из архива данный файл с помощью bconsole. Директория E:/SIT_v1.1 утеряна вся.
Управление при перемещении и маркировки файлов в этом режиме довольно необычны так, что привыкайте.

restore Automatically selected Catalog: MyCatalog Using Catalog "MyCatalog" Сначала выберите один или несколько JobIds, которые содержат файлы которые должны быть восстановлены. Вам будет предложен ряд методов указания JobIds. Тогда вам будет разрешено выбрать, какие файлы из этих JobIds должны быть восстановлены. To select the JobIds, you have the following choices: 1: List last 20 Jobs run 2: List Jobs where a given File is saved 3: Enter list of comma separated JobIds to select 4: Enter SQL list command 5: Select the most recent backup for a client 6: Select backup for a client before a specified time 7: Enter a list of files to restore 8: Enter a list of files to restore before a specified time 9: Find the JobIds of the most recent backup for a client 10: Find the JobIds for a backup for a client before a specified time 11: Enter a list of directories to restore for found JobIds 12: Select full restore to a specified Job date 13: Cancel Select item: (1-13): 1 +-------+--------------------+---------------------+----------+----------+-------------+ | JobId | Client | StartTime | JobLevel | JobFiles | JobBytes | +-------+--------------------+---------------------+----------+----------+-------------+ | 79 | srv2-fd | 2011-05-20 23:56:55 | F | 109 | 29670528 | | 75 | srv1-fd | 2011-05-20 23:32:37 | F | 831 | 717551775 | | 74 | srv1-fd | 2011-05-20 23:30:46 | F | 0 | 0 | | 73 | srv2-fd | 2011-05-20 23:29:24 | F | 109 | 29670528 | | 72 | srv2-fd | 2011-05-20 23:26:51 | F | 109 | 29670528 | +-------+--------------------+---------------------+----------+----------+-------------+ Для выбора JobIds, у вас есть следующие варианты [дальше лучше без перевода]: 1: List last 20 Jobs run 2: List Jobs where a given File is saved 3: Enter list of comma separated JobIds to select 4: Enter SQL list command 5: Select the most recent backup for a client 6: Select backup for a client before a specified time 7: Enter a list of files to restore 8: Enter a list of files to restore before a specified time 9: Find the JobIds of the most recent backup for a client 10: Find the JobIds for a backup for a client before a specified time 11: Enter a list of directories to restore for found JobIds 12: Select full restore to a specified Job date 13: Cancel Select item: (1-13): 3 Enter JobId(s), comma separated, to restore: 79 You have selected the following JobId: 79 Building directory tree for JobId(s) 79 ... ++++++++++++++++++++++++++++++++ 97 files inserted into the tree. Сейчас вы работаете в режиме выбора файла, где вы добавляете (mark) и удалять (unmark) файлы, котоfрые будут восстановлены. Нет изначально добавленных файлов, вы можете использовать ключевое слов "all" в командной строке чтобы отметить всё. Введите "done ", чтобы завершить этот режим. cwd is: / $ ls E:/ $ cd E:/ cwd is: E:/ $ ls SIT_v1.1/ $ mark SIT_v1.1 109 files marked. $ done Bootstrap records written to /var/db/bacula/thor.kmps.local-dir.restore.4.bsr The job will require the following Volume(s) Storage(s) SD Device(s) =========================================================================== srv2_volume File-SRV2 FileStorage-srv2 Volumes marked with "" are online. 109 files selected to be restored. Defined Clients: 1: srv1-fd 2: srv2-fd 3: thor-fd 4: thor.kmps.local-fd Select the Client (1-4): 2 Run Restore job JobName: RestoreFiles Bootstrap: /var/db/bacula/thor.kmps.local-dir.restore.4.bsr Where: /home/bacula/bacula-restores Replace: always FileSet: Full Set Backup Client: srv2-fd Restore Client: srv2-fd Storage: File-SRV2 When: 2011-05-21 00:01:10 Catalog: MyCatalog Priority: 10 Plugin Options: None OK to run? (yes/mod/no): yes Job queued. JobId=80

Посмотрим статус директора и что он сказал на эту работу:

status dir thor.kmps.local-dir Version: 5.0.3 (04 August 2010) amd64-portbld-freebsd8.2 freebsd 8.2- Daemon started 20-май-11 23:32, 6 Jobs run since started. Heap: heap=0 smbytes=103,909 max_bytes=240,228 bufs=366 max_bufs=395 Terminated Jobs: JobId Level Files Bytes Status Finished Name ==================================================================== 78 1 6.825 K OK 20-май-11 23:48 RestoreFiles 79 Full 109 29.67 M OK 20-май-11 23:57 srv2_backup-job 80 109 29.67 M OK 21-май-11 00:01 RestoreFiles ====
Все в порядке данные восстановлены (JobId=80). Проверка

Заходим на srv2.kmps.local и на диске C:\ появляется с восставленная директория.
C:\home\bacula\bacula-restores\E\SIT_v1.1
Восстановление файлов на Unix клиентах рассматривать не буду в виду аналогичной работы.

Гибридный метод

Я сторонник простых и надежных решений, а так же дублирующих систем. К примеру у меня как и у всех стоит RAID-1 на всех серверах и это хорошо. Идем дальше у меня до бакулы на серверах был отдельный раздел\слайс\жеский диск созданный специально для бекапов и туда резервные копии складывает утилита или скрипт. К примеру:

  • Windows сервера обрабатывает утилита ntbackup она сохраняет весь системный диск и складывает копии в директорию E:/Backup/Windows каждое 1й понедельник месяца.
  • Unix сервера обрабатывает утилита dump сохраняя необходимые разделы в /backup каждый 1й понедельник месяца.

Бакула дополнила существующую схема:

  • Windows сервера - копирует E:/Backup/Windows, расшаренные ресурсы и 1С.
  • Unix сервера - копирует /backup и некоторые слайсы.

Переменные

Pool

Пул это описание для набора томов. Тома это файлы, ленты и DVD. Он используется при описании задания для указания нужного тома.

  • Name - наименование пула
  • Maximum Volumes (0 - бесконечность) - ограничить количество томов в пуле
  • Pool Type - Backup остальные не реализованы, Archive, Cloned, Migration, Copy, Save
  • Storage - описывает сервер хранения, он перекрывает значение, заданное в Job и Schedule и необходимо для работы заданий миграции
  • Maximum Volume Jobs (0 - бесконечность) - по достижении указанного числа заданий, записанных на том, том переводится в состояние Used (плохо совместим с одновременной записью нескольких заданий на том)
  • Maximum Volume Files (0 - бесконечность) - по достижении указанного числа файлов, записанных на том, том переводится в состояние Used. Проверка производится только в конце задания
  • Maximum Volume Bytes (0 - бесконечность) - по достижении указанного числа байт, записанных на том, том переводится в состояние Used
  • Volume Use Duration (0 - бесконечность) - отсчитывается с момента первой записи по достижении которой том переводится в состояние Used
  • Catalog Files - заносить информацию о сохранённых файлах в каталог
  • Volume Retention - время хранения информации о заданиях и файлах на данном томе в каталоге. Отсчёт начинается с момента перехода из состояния Appendable в Full или Used. Так же не рекомендуется устанавливать меньше 2х интервалов между полным сохранением. Сами данные не стираются
  • AutoPrune - удалять из каталога записи о файлах и заданиях, срок хранения которых истёк в соответствии с Volume Retention, при поиске доступного на запись тома
  • RecyclePool - в какой пул переводить том при освобождении места по умолчанию - оставлять в текущем
  • Recycle - если bacule требуется том для записи, но нет ни одного дополняемого тома в пуле (состояние Appendable), то bacule ищет том, все задания и файлы которого удалены из каталога (состояние Purged) по истечению срока хранения или вручную, и использует его, переведя в состояние Recycled
  • Recycle Oldest Volume - если bacule требуется том для записи, но нет ни одного дополняемого тома в пуле (состояние Appendable), то она очистит самый старый том (удалит информацию из каталога в соответствии со сроками хранения Job Retention, File Retention и Volume Retention). Если на томе не осталось ничего полезного, то повторно использовать его. Не использовать, если в пуле всего 1 том
  • Recycle Current Volume - попробовать освободить смонтированный том. Не использовать, если в пуле всего 1 том
  • Purge Oldest Volume - если bacule требуется том для записи, но нет ни одного дополняемого тома в пуле (состояние Appendable), то удаляются из каталога все записи о заданиях и файлах на самом старом томе независимо от срока хранения и том повторно используется. Не рекомендуетс)
  • Cleaning Prefix - если имя тома начинается с указанной строки, то том считается чистящей лентой и запись на него не производится - для автомагазинов со штриховыми метками
  • Label Format - шаблон для создания имени тома при автоматическом создании метки тома. Требует указания Label Media в настройках сервера хранения. Имя тома может содержать буквы, цифры и '-_:.'; шаблон заключается в кавычки; шаблон может включать имена переменных - начинаются с '$', '${' или '['; переменные делятся на счётчики, переменные окружения и внутренние переменные (Year, Month, Day, Hour, Minute, Second, WeekDay, Job, Dir (имя директора), Level, Type, JobId, JobName, Storage, Client, NumVols, Pool (не рекомендуется, т.к. это может оказаться не тот пул), Catalog, MediaType); определено множество функций над переменными, но привыкать к ним не надо, т.к. в новых версиях Label Format заменена скриптом на python; если имена переменных в шаблоне не используются, то имя тома образуется из строки, к которой добавляется число томов в пуле + 1, дополненное нулями до 4 цифр ("File-" => "File-0003"); не стоит использовать NumVols, если вы предполагаете удаление томов)
  • Next Pool - имя пула назначения для задания миграции
  • Migration Time - максимальное время хранения заданий в томах для отбора при миграции типа PoolTime
  • Migration High Bytes -максимальный граница размера пула для задания миграции типа PoolOccupancy
  • Migration Low Bytes - нижняя граница размера пула для задания миграции типа PoolOccupancy
  • JobRetention - интервал хранения информации о заданиях, приоритет над описанием клиента
  • FileRetention - интервал хранения информации о файлах, приоритет над описанием клиента
  • ActionOnPurge - Truncate обнуление размера файла при очистке тома)
Консоль

Аутентификация и авторизация доступа к директору может быть 3 типов:

  • Анонимная консоль со всеми правами (пароль доступа к директору указывается в ресурсе Director настройки консоли и должен соответствовать директиве Password ресурса Director настройки директора)
  • "Именованная" консоль в настройках консоли и директора необходимо сконфигурировать ресурсы Console, в которых указывается имя консоли и пароль доступа к директору. Права доступа определяются с помощью ACL в ресурсе Console настройки директора.
  • Если имя консоли совпадает с именем клиента, то данная консоль имеет права выполнять команду SetIP, чтобы изменить значение Address соответствующего ресурса Client в настройке директора на IP консоли (необходимо при использовании динамических адресов DHCP); команда SetIP должна быть разрешена в ACL

Права доступа для именованной консоли по умолчанию - права отсутствуют, восстанавливать можно только в место по умолчанию.

  • Name - должно быть указано в настройках консоли в ресурсе Console
  • Password - должно быть указано в настройках консоли в ресурсе Console
  • JobACL - список через запятую имён ресурсов заданий, к которым имеет доступ данная консоль можно использовать ключевое слово "all"; можно использовать несколько директив.
  • ClientACL - разрешенные клиенты
  • StorageACL - разрешенные хранялища
  • ScheduleACL - разрешенные планировщики
  • PoolACL - разрешенные пулы
  • FileSetACL - разрешенные наборы файлов
  • CatalogACL - разрешенные каталоги
  • CommandACL - разрешенный список команд, к которым имеет доступ данная консоль
  • WhereACL - куда можно восстанавливать файлы можно использовать ключевое слово "all"; "/" означает восстановление на исходное место; можно использовать несколько директив
Schedule

Описание расписания запуска заданий и переопределения ресурсов Level, Pool, Storage, Messages для задания. Используется в описании задания для указания времени автоматического запуска.

  • Name - Имя расписания
  • Run - [переназначение ресурсов] [дата и время выполнения] можно описывать несколько запусков. К примеру в начале каждого часа (0-23), каждого дня недели (Monday-Sunday), каждого дня месяца (1-31), каждой недели (first-fifth), каждого месяца (january-december), и года. Ограничивающая маска может состоять из элементов или интервалов к примеру неделя начинается в понедельник. Используются шаблоны к примеру: monday-friday, daily, first (первая неделя месяца), w02 - вторая неделя года, а w01 - это соответственно первая неделя).

Остальные переменные буду добавлять по надобности.

Управление

Webacula

Воспользуемся Webacula это PHP (Zend Framework) веб-интерфейс для мониторинга и восстановление файлов.
Основные особенности программы:

  • Полная поддержка MySQL, PostgreSQL и Sqlite баз данных.
  • Запуск Задач
  • Восстановление всех файлов или выбранных файлов из Задач по JobId
  • Восстановление последней резервной копии клиента
  • Восстановление резервной копии клиента до указанного времени
  • Показывает линию времени для Заданий
  • Монтирует и размонтирует Хранилища
  • Показывает Задания, которые выполняются с ошибками (последние 7 дней)
  • Показывает состояние вашего Тома
  • Показывает запланированные задания (на 24 часа вперед)
  • Показывает все запущенные Задания
  • Показывает законченные Задачи (выполненных за последние 24 часа)
  • Поиск Задач по нескольким условиям
  • Подробная информация о Pools, Volumes, Storages и Clients
  • Лента RSS
  • Многоязычная поддержка - стандартный gettext (.mo) файлы. В данный момент поддерживаются языки: английский, французский, немецкий, португальский, русский.
Установка

Для начала скачаем Webacula и ZendFramework к ней. (следите за новыми версиями и сами корректируйте линки для fetch). Установим последнюю версию, распакуем и дадим нужные права.

# cd /usr/local/www/ # fetch _http://sourceforge.net/projects/webacula/files/webacula/5.5.0/webacula-5.5.tar.gz # fetch _http://framework.zend.com/releases/ZendFramework-1.11.6/ZendFramework-1.11.6-minimal.tar.gz # tar zxvf webacula-5.5.tar.gz # mv webacula-5.5 webacula # tar zxvf ZendFramework-1.11.6-minimal.tar.gz # cd ZendFramework-1.11.6-minimal/library/ # ls Zend # cp -R Zend/ /usr/local/www/webacula/library/Zend/ # cd /usr/local/www/ # chown -R www:www webacula/ # rm webacula-5.5.tar.gz ZendFramework-1.11.6-minimal.tar.gz Проверка модулей

Проверим необходимые модули

# cd /usr/local/www/webacula/install/ # php-cgi check_system_requirements.php sqlite3: not found X-Powered-By: PHP/5.3.6 Content-type: text/html Webacula check System Requirements... Current MySQL version = 5.0.92 OK Current PostgreSQL version = 8.4.7 OK Current PHP version = 5.3.6 OK php pdo installed. OK php gd installed. OK php xml installed. OK php dom installed. OK php pdo_mysql installed. OK Warning. PHP extension pdo_pgsql not installed. Warning. PHP extension pdo_sqlite not installed. php-dom, php-xml installed. OK
Кому, что не хватает тот доставит. Конфигурационные файлы

Отредактируем конфигурационный файл webacula:

# cat /usr/local/www/webacula/application/config.ini [general] db.adapter = PDO_MYSQL db.config.host = localhost db.config.username = BACULA_USER db.config.password = BACULA_USER_PASS db.config.dbname = BACULA_DB def.timezone = "Europe/Moscow" locale = "ru" bacula.sudo = "/usr/local/bin/sudo" bacula.bconsole = "/usr/local/sbin/bconsole" bacula.bconsolecmd = "-n -c /usr/local/etc/bconsole.conf" [timeline] fontsize = 10 [webacula] email.to_admin = root@localhost email.from = webacula@localhost [feed] feed_title = "My Bacula backup server #1" feed_desc = "Description feed here" [layout] path = "default"

Отредактируем конфигурационный файл DB:

# vi /usr/local/www/webacula/install/db.conf db_name="BACULA_DB" db_user="BACULA_USER" db_pwd="BACULA_USER_PASS" # Веб аккаунт 'root', а пароль к нему укажите ниже # webacula_root_pwd="WEB_WEBACULA_PASSWORD" База в MySQL

В новой версии Webacula 5.5 таблицы Bacula и Webacula совмещены те располагаются в одной БД.
Теперь нам необходимо добавить нужные таблицы и заполнить ACL:

# cd /usr/local/www/webacula/install/MySql/ # sh ./10_make_tables.sh Creation of webacula MySQL tables succeeded. # sh ./20_acl_make_tables.sh Creation of Webacula ACLs MySQL tables succeeded.

Добавим права на запуск /usr/sbin/bconsole от имени www.

# visudo WWW_USER ALL=NOPASSWD: /usr/local/sbin/bconsole Веб-интерфейс

Я слинковал публичный html в нужную мне директорию своего веб сервера:

# cd /home/serv/www/data/ # ll lrwxr-xr-x 1 root serv 20B 5 авг 2010 glpi -> /usr/local/www/glpi/ lrwxr-xr-x 1 root serv 26B 5 авг 2010 phpMyAdmin -> /usr/local/www/phpMyAdmin/ -rw-r--r-- 1 serv serv 21B 5 авг 2010 phpinfo.php lrwxr-xr-x 1 root serv 27B 5 авг 2010 phpldapadmin -> /usr/local/www/phpldapadmin lrwxr-xr-x 1 root serv 20B 17 авг 2010 sarg -> /usr/local/www/sarg/ drwxr-xr-x 3 serv serv 512B 12 авг 2010 sqstat lrwxr-xr-x 1 root serv 29B 27 май 09:17 webacula -> /usr/local/www/webacula/html/

Отредактировал .htaccess

# vi /usr/local/www/webacula/html/.htaccess SetEnv APPLICATION_ENV development SetEnv APPLICATION_ENV production #php_flag magic_quotes_gpc off #php_flag register_globals off RewriteEngine On # edit RewriteBase if necessary RewriteBase /webacula RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.$ - [NC,L] RewriteRule ^.$ index.php [NC,L]

Запускаем:
http://webserver.local/webacula

BAT, tray-monitor

Для мониторинга и удобной работы с бакулой есть несколько утилит доступных в Unix системах:
BAT (Bacula Admin Tool) - графический интерфейс к бакуле скриншоты

Port: bacula-bat-5.0.3 Path: /usr/ports/sysutils/bacula-bat Info: The network backup solution (GUI) Maint: B-deps: expat-2.0.1_1 fixesproto-4.1.2 fontconfig-2.8.0,1 freetype2-2.4.4... R-deps: expat-2.0.1_1 fixesproto-4.1.2 fontconfig-2.8.0,1 freetype2-2.4.4... WWW: _http://www.bacula.org/

tray-monitor - это Bacula KDE/GNOME tray monitor applet. Она вам показывает статус работы сервера.

Заметка: в опциях bacula-client еще есть WXCONSOLE Build with wxGTK based GUI console: deprecated.

Web интерфейсы - их достаточное количество и на любой вкус список.

FAQ

В) У меня не работают встроенные задания (к примеру BackupCatalog)
О) Проверьте разрешение на чтение пользователем bacula.

# ll bacula-dir.conf -rw-r----- 1 root bacula 9,4K 26 май 16:12 bacula-dir.conf # ll bacula-sd.conf -rw-r----- 1 root bacula 6,7K 24 май 14:05 bacula-sd.conf # ll bconsole.conf -rw-r----- 1 root bacula 279B 17 май 11:52 bconsole.conf

В) В самом начале статье было упоминание о утилите ntbackup где, для чего вы ее применяете.
О) До бакулы я сохранял образ системы с помощью этой утилиты с периодичностью раз в месяц и мне не хотелось ломать установленный порядок. Так же я настроил теневое копирование с переодичностью 1 раз в 4 часа для БД и расшаренных директорий и пользователи могут откатывать нужные файлы на нужную дату и время.

В) Что делать если сервер Windows\Unix сломался и не загружаться, но есть резервные копии диска C:\ (файл ntbackup) и\или дампы ФС.
О) Попробуем описать ход работы:
а1) Запускаете Recovery Console (Консоль Восстановления) с диска ОС в нем восстанавливаете загрузочные файлы и при удачном раскладе загружаетесь. Далее вытаскиваете из архива бакулы файл ntbackup для этого клиента и заливаете на него. Далее через “Мастер восстановления” утилиты ntbackup все разворачиваете обратно.
а2) Бывает что вариант а1 не работает никак не удается загрузить систему. Есть вариант с ASR, но требуется создание аварийной дискеты в ntbackup для этой машины. Восстановите файл ntbackup на любую машину с последующим копированием этого файла на сдохший сервер (возьмите любую LiveCD сбору WinPE\Linux) и далее запускаете CD c ОС выбирается восстановление ASR вставляете дискету и выполняете работу.
а3) Disast Recove Using Bacula (bacula rescue disk)

б1) Для Unix пытайтесь загрузиться или воспользуйтесь Unix LiveCD и подмонтируйте фс с последующим разворотом архивов\файлов в нужные слайсы.

Книги

Дополнительные материалы В чем нарисовать схему подключения В чем нарисовать схему подключения В чем нарисовать схему подключения В чем нарисовать схему подключения В чем нарисовать схему подключения В чем нарисовать схему подключения В чем нарисовать схему подключения В чем нарисовать схему подключения В чем нарисовать схему подключения В чем нарисовать схему подключения

Читать далее:




Как сделать машинки для резки табака




Как самому сделать блесну маропедка




Винтажные открытки в скрапбукинге




Опель вектра б схема приборной панели




Колонна ректификационная схема автоматизации