Глава 2. Имеющиеся системы резервного копирования в дистрибутиве НауЛинукс

В состав дистрибутива НауЛинукс входят системы резервного копирования Bacula и AMANDA. Рассмотрим их несколько подробнее.

2.1. Система резервного копирования Bacula

2.1.1. Введение

Bacula — это мощная система создания и управления резервными копиями данных, а также восстановления данных, если потребуется. Она имеет клиент-серверную структуру и легко масштабируется, позволяя делать резервные копии с десятков и сотен компьютеров по сети. Функционально Bacula состоит из компонентов (служб), каждая из которых реализует определенные функции. Взаимодействие служб показано на Рис. 2.1.

Общая структура системы Bacula

Рисунок 2.1. Общая структура системы Bacula

  • Служба Центр управления (Director) — это программа, которая управляет операциями копирования, восстановления, верификации и архивации. Системный администратор использует Director, чтобы запускать задания на копирование и восстановление данных, вести журнал всего происходящего. Director выполняется как демон в фоновом режиме. Она может быть установлена на разных платформах: Linux, Solaris, FreeBSD, OSX.

  • Служба Консоль (Console) — это программа, которая позволяет администратору или пользователю взаимодействовать со службой Director. Служба Console доступна в 3-х вариантах: текстовый интерфейс (командная строка), GUI-интерфейс, Web-интерфейс.

  • Служба файлов (File Service) — это программа, устанавливаемая на компьютере, который требует резервного копирования. Она является клиентской частью Bacula. Может быть установлена на разных платформах: FreeBSD, Linux, MS Windows, OSX, Solaris.

  • Служба Хранилище (Storage Service) состоит из программ, которые выполняют запись и восстановление атрибутов файлов и самих данных на физические носители (тома). В качестве физических носителей могут быть магнитные ленты, ленточные библиотеки, файлы на жестких дисках, CD/DVD диски, USB устройства.

  • Служба каталогов (Catalog Service) состоит из программ, ответственных за поддержание индексов файлов и баз данных томов для всех файлов, которые копируются на тома. Служба Каталогов позволяет администратору или пользователю быстро найти положение копии требуемого файла и восстановить его. Bacula в настоящее время поддерживает три вида баз данных: MySQL, PostgreSQL, SQLite.

Серверные части Bacula: службу каталогов, хранилище и центр управления можно поместить на разных серверах, но разумнее всего на одном сервере.

Bacula обеспечивает 3 уровня копирования данных:

  • полная копия — копируются все файлы из списка независимо от даты создания и модификации;

  • дифференциальная копия — копируются файлы из списка, которые изменились после последнего полного копирования;

  • инкрементальная копия — копируются файлы из списка, которые изменились после последнего полного, дифференциального или инкрементального копирования.

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

Копирование, восстановление, верификация и административные функции оформляются в виде задания (Job). В задании задается набор файлов (FileSet), который нужно копировать, компьютер (Client), с которого надо копировать файлы, время копирования (Schedule), пул (Pool), куда копировать и дополнительные директивы.

Обычно комбинации FileSet/Client соответствует одно задание. Большинство директив, таких как FileSet, Pool, Schedule может принимать одно и то же значение в разных заданиях. Например один и тот же набор файлов может копироваться с разных клиентов. Поэтому удобно задать умолчания для задания JobDefs, которые могут быть изменены в конкретном задании, таким образом устраняется необходимость переписывания всех параметров в каждом задании.

Задания на копирование данных определяются в конфигурационном файле Директора (смотрите ниже) и там же определяется график автоматического запуска этих заданий. Директор выполняется постоянно как демон в фоновом режиме и запускает задания на копирование в соответствии с графиком. Администратор (пользователь) может также вручную запустить эти задания в любое время, используя Службу Консоль.

2.1.2. Установка Bacula

Пакеты Bacula включены в репозиторий naulinux-extras, но по умолчанию он выключен. Поэтому для пользователей НауЛинукс установку Bacula можно выполнить командой

yum install --enablerepo=naulinux-extras 'bacula*'

В результате выполнения этой команды установятся все компоненты Bacula, включая компоненты для работы с 3-мя базами данных: MySQL, PostgreSQL, SQLite. По умолчанию Bacula настроена на работу с PostgreSQL. Если надо выбрать MySQL, то надо поменять символические линки в директории /etc/alternatives. Так, например, линк

/etc/alternatives/bacula-sd -> /usr/sbin/bcopy.postgresql

поменять на

/etc/alternatives/bacula-sd -> /usr/sbin/bcopy.mysql

и т.д.

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

  • Создать базу данных с именем «bacula», выполнив под root скрипт

    /usr/libexec/bacula/create_bacula_database.mysql
  • Создать таблицы в базе «bacula», выполнив под root скрипт

    /usr/libexec/bacula/make_bacula_tables.mysql
  • Предоставить пользователю «bacula» привилегии для работы с базой данных «bacula», выполнив под любым аккаунтом скрипт

    /usr/libexec/bacula/grant_bacula_privileges.mysql

Для запуска демонов Bacula используются скрипты /etc/init.d/bacula-dir, /etc/init.d/bacula-sd, /etc/init.d/bacula-fd. Чтобы эти скрипты автоматически перезапускались после перезагрузки системы, надо выполнить команду

chkconfig bacula-dir on 

и так же для других скриптов.

Запускать эти демоны нужно только после конфигурирования компонентов Bacula.

2.1.3. Конфигурирование служб (компонентов) Bacula

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

  • bacula-fd.conf (служба файлов);

  • bacula-dir.conf (центр управления);

  • bacula-sd.conf (хранилище);

  • bconsole.conf и gnome-console.conf (служба консоль).

Конфигурационные файлы состоят из директив (ресурсов), параметры каждого ресурса находятся внутри фигурных скобок.

Рассмотрим пример, когда серверная часть и клиентская часть расположены на одном компьютере с именем csdmm.pnpi.spb.ru. В качестве базы данных для каталога выбрана MySQL. Копирование выполняется на диск, в директорию /tmp.

2.1.4. Конфигурирование Центра управления (Director)

Конфигурационный файл Director (bacula-dir.conf) является самым большим из всех сервисов (демонов). Каждый Client, Job, FileSet и Storage службы должны быть определены здесь.

Определить сам Director:

# Директива «директор bacula»
      Director {
            Name = csdmm.pnpi.spb.ru-dir                # 1
            DIRport = 9101                              # 2
            QueryFile = "/etc/bacula/query.sql"         # 3
            WorkingDirectory = "/var/spool/bacula"      # 4
            PidDirectory = "/var/run"                   # 5
            Maximum Concurrent Jobs = 1                 # 6
            Password = "пароль"                         # 7
            Messages = Daemon                           # 8
            }

Пояснения к строкам директивы директор «bacula»:

  1. Имя директора.

  2. Номер порта.

  3. Файл скрипта для обращения к базе данных.

  4. Рабочая директория директора.

  5. Директория, где будет храниться PID директора.

  6. Максимальное число заданий.

  7. Консольный пароль.

  8. Способ доставки сообщений демона (смотрите ниже).

Определить параметры задания по умолчанию:

# Директива «задание bacula по умолчанию»
      Jobdefs {
                Name = "DefaultJob"                       # 1
                Type = Backup                             # 2
               Level = Incremental                        # 3
              Client = csdmm.pnpi..spb.ru-fd              # 4
             FileSet = "Full Set"                         # 5
            Schedule = "WeeklyCycle"                      # 6
             Storage = File                               # 7
            Messages = Standard                           # 8
                Pool = Default                            # 9
            Priority = 10                                 # 10
      }

Пояснения к строкам директивы «задание bacula по умолчанию»:

  1. Имя задания.

  2. Тип задания.

  3. Установить уровень копирования «инкрементальный».

  4. Имя клиента.

  5. Установить набор файлов «полный набор».

  6. Установить расписание «недельный цикл».

  7. Установить тип памяти, куда будет выполняться резервная копия «файл».

  8. Способ доставки сообщений от задания (смотрите ниже).

  9. Пул, куда будет выполняться копирование «по умолчанию».

  10. Установить приоритет «10» по отношению к другим заданиям резервного копирования (наивысший приоритет = 0).

Определить основное задание для выполнения копирования, по умолчанию на диск в директорию /tmp.

      Job { 
              Name = "BackupClient1" 
           JobDefs = "DefaultJob" 
   Write Bootstrap = "/var/spool/bacula/BackupClient1.bsr"
        }

После основного копирования сделать бэкап базы данных каталога:

# Директива «задание на копирование каталога bacula»
      Job { 
                Name = "BackupCatalog"                        # 1
             JobDefs = "DefaultJob"                           # 2
               Level = Full                                   # 3
              FileSet="Catalog"                               # 4
            Schedule = "WeeklyCycleAfterBackup"               # 5
        RunBeforeJob = 
  "/usr/libexec/bacula/make_catalog_backup bacula bacula"     # 6 
              RunAfterJob  = 
            "/usr/libexec/bacula/delete_catalog_backup"       # 7
              Write Bootstrap = 
   "/var/spool/bacula/BackupCatalog.bsr"                      # 8
  Priority = 11                                               # 9
   
      }

Пояснения к директиве «задание на копирование каталога bacula»:

  1. Имя задания.

  2. Параметры по умолчанию.

  3. Установить уровень копирования «полное копирование».

  4. Установить, что копировать каталог.

  5. Установить расписание копирования (здесь еженедельное копирование). Вначале следует выполнить ASCII копию каталога.

  6. Создать копию каталога.

  7. После выполнения бэкапа удалить копию каталога.

  8. Записать bootstrap после основного бэкапа.

  9. Установить приоритет 11 по отношению к другим заданиям резервного копирования (наивысший приоритет = 0).

Определить стандартный шаблон задания на восстановление, может быть изменен программой Console:

Job {
	    Name = "RestoreFiles" 
	    Type = Restore 
	    Client = csdmm.pnpi.spb.ru-fd                 
	    FileSet = "Full Set"                  
	    Storage = File                      
	    Pool = Default 
	    Messages = Standard 
	    Where = /tmp/bacula-restores 
	    }

Определить список файлов, которые требуется копировать.

FileSet { 
	    Name = "Full Set" 
	    Include { 
	    Options { 
	    signature = MD5 
	    }
	    File = /etc
	    File = /sbin
	    File = /usr/local
	  }

Если копируется корневая директория, то надо исключить следующие директории и файлы:

  Exclude {  
    File = /tmp 
    File = /proc 
  } 
}

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

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 
}

Опеределить, когда делать бэкап каталога, он стартует после основного бэкапа.

Schedule { 
  Name = "WeeklyCycleAfterBackup" 
  Run = Full sun-sat at 23:10 
             }

Определить, какие файлы каталога копировать (dump каталога).

ileSet {
  Name = "Catalog" 
  Include { 
    Options { 
      signature = MD5 
}
    File = "/var/spool/bacula/bacula.sql" 
 }
 }

Определить клиента для бэкапа:

#  Директива «bacula клиент»
Client {
  Name = csdmm.pnpi.spb.ru-fd           # 1 
  Address = csdmm.pnpi.spb.ru           # 2
  FDPort = 9102                         # 3
  Catalog = MyCatalog                   # 4
  Password = "пароль"                   # 5 
  File Retention = 30 days              # 6
 Job Retention = 6 month                # 7
  AutoPrune = yes                       # 8                                        
}

Пояснения к строкам директивы «bacula клиент»:

  1. Имя клиента.

  2. IP адрес или имя хоста в форме FQDN.

  3. Номер порта.

  4. Пароль для клиента.

  5. Имя каталога.

  6. Время хранения файла (здесь 30 дней).

  7. Время хранения задания (здесь 6 месяцев).

  8. Удалить задания с истекшим сроком хранения.

Определить устройство для Хранилища:

# Директива «хранилище bacula»
Storage {
  Name = File                           # 1
  Address = csdmm.pnpi.spb.ru           # 2
  SDPort = 9103                         # 3
  Password = "пароль"                   # 4
  Device = FileStorage                  # 5
  Media Type = File                     # 6
  }

Пояснения к строкам директивы «хранилище bacula»:

  1. Имя хранилища.

  2. Адрес хранилища (FQDN).

  3. Номер порта.

  4. Пароль для доступа к хранилищу.

  5. Установить устройство «файловая память».

  6. Установить тип устройства «файл».

Определить базу данных каталога для Bacula.

Catalog {
  Name = MyCatalog 
  dbname = "bacula"; dbuser = "bacula"; dbpassword = "" 
}

Определить способ доставки сообщений задания. Посылать сообщения задания на электронный адрес и консоль, кроме сообщений о пропущенных файлах. А также записывать сообщения, кроме сообщений о пропущенных файлах, в лог файл /var/spool/bacula/log.

# Директива Messages
Messages {
  Name = Standard
  mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) %r\" -s \"Bacula: %t %e of %c %l\" %r"
  operatorcommand = "/usr/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
  append = "/var/spool/bacula/log" = all, !skipped
 }

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

Messages { 
  Name = Daemon 
  mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) %r\" -s \"Bacula daemon message\" %r" 
  mail = root@localhost = all, !skipped            
  console = all, !skipped, !saved 
  append = "/var/log/bacula.log" = all, !skipped 
}

Определить пул томов:

# Директива «описатель томов bacula»
Pool  {
  Name = Default                       # 1
  Pool Type = Backup                   # 2
  Recycle = yes                        # 3               
  AutoPrune = yes                      # 4
  Volume Retention = 365 days          # 5
 }

Пояснения к строкам директивы «описатель томов bacula»:

  1. Имя пула.

  2. Тип пула.

  3. Автоматически использовать тома с истекшим сроком хранения.

  4. Удалить задания на копирование с истекшим сроком хранения.

  5. Установить срок хранения заданий 365 дней.

2.1.5. Конфигурирование клиента (File Service или File Daemon)

Конфигурационный файл клиента (bacula-fd.conf) заметно меньше конфигурационного файла Director. Здесь обязательно определить только 3 ресурса: Director, FileDaemon, Messages.

Определить список Директоров, которым разрешен контакт с этим клиентом (File Daemon).

# Директива «файловый демон bacula»
FileDaemon {                         
  Name = csdmm.spb.ru-fd                        # 1
  FDport = 9102                                 # 2
  WorkingDirectory = /var/spool/bacula          # 3
  Pid Directory = /var/run                      # 4
  Maximum Concurrent Jobs = 20                  # 4
 }

Пояснения строк директивы «файловый демон bacula»:

  1. Имя демона.

  2. Номер порта, который использует демон.

  3. Рабочая директория демона.

  4. Директория, где будет храниться PID демона.

  5. Максимальное число заданий копирования, которое обслуживает демон.

Определить режим посылки сообщений Директору.

Посылать Директору все сообщения за исключением пропущенных файлов.

Messages { 
  Name = Standard 
  director = csdmm.pnpi.spb.ru-dir = all, !skipped, !restored 
}

2.1.6. Конфигурирование Службы Хранилища (Storage Service или Storage Daemon)

Конфигурационный файл Storage Daemon (bacula-sd.conf) имеет относительно немного ресурсов. Однако из-за большого разнообразия физических носителей для бэкапа необходимо задавать довольно  много параметров для ресурса Device.

Но для современных устройств хранения достаточно выбрать значения по умолчанию, поэтому в действительности требуется очень мало параметров.

Определить сам Storage Daemon:

# Директива «storage bacula»
Storage {                             
  Name = csdmm.pnpi.spb.ru-sd                   # 1
  SDPort = 9103                                 # 2
  WorkingDirectory = "/var/spool/bacula"        # 3
  Pid Directory = "/var/run"                    # 4
  Maximum Concurrent Jobs = 20                  # 5
}

Пояснения к директиве «storage bacula»:

  1. Имя демона.

  2. Номер порта, по которому демон ожидает обращения.

  3. Рабочая директория демона.

  4. Директория, где будет храниться PID демона.

  5. Максимальное число параллельно выполняющихся заданий копирования.

Определить список Директоров, которым разрешено контактировать с Storage Daemon.

Director { 
  Name = csdmm.pnpi.spb.ru-dir 
  Password = "пароль" 
}

Определить устройства хранения, поддерживаемые этим Storage Daemon.

Чтобы использовать данное устройство, конфигурационный файл Директора bacula-dir.conf должен иметь те же самые Name и Media Type:

# Директива «устройство хранения bacula»
Device  {
  Name = FileStorage                    # 1
  Media Type = File                     # 2
  Archive Device = /tmp                 # 3
  LabelMedia = yes;                     # 4
  Random Access = Yes;                  # 5
  AutomaticMount = yes;                 # 6 
  RemovableMedia = no;                  # 7
  AlwaysOpen = no;                      # 8
 }

Пояснения к директиве «устройство хранения bacula»:

  1. Имя устройства хранения.

  2. Тип устройства хранения.

  3. Адрес устройства хранения.

  4. Установить режим записи меток (здесь: разрешить запись меток на носитель, который не имеет меток системы Bacula).

  5. Установить, что это устройства с произвольным доступом, т.е. диск (в противоположность ленте, которая является устройством с последовательным доступом).

  6. Установить, что устройство можно читать, когда оно готово к работе.

  7. Установить, что устройство не требует установки внешних носителей.

  8. Установить, что устройство не всегда готово к работе.

Определить, что следует посылать все сообщения Директору:

Messages {
  Name = Standard 
  director = csdmm.pnpi.spb.ru-dir = all 
            }

2.1.7. Конфигурирование Службы Консоль

Существует отдельный конфигурационный файл для интерфейса командной строки bconsole.conf и отдельный конфигурационный файл для графического интерфейса (gnome-console) gnome-console.conf.

bconsole.conf содержит директиву, определяющую Директор, с которым необходимо соединяться:

Director { 
  Name = csdmm.pnpi.spb.ru-dir 
  DIRport = 9101 
  address = csdmm.pnpi.spb.ru 
  Password = "пароль" 
}

Файл gnome-console.conf кроме директивы Director содержит директиву, определяющую консольный фонт.

irector { 
  Name = csdmm.pnpi.spb.ru-dir 
  DIRport = 9101 
  address = csdmm.pnpi.spb.ru 
  Password = "пароль" 
} 

ConsoleFont { 
  Name = Default 
  Font = "LucidaTypewriter 9" 
}

2.1.8. Работа в Bacula c использованием командной строки (bconsole)

Служба Console предоставляет администратору (пользователю) интерфейс (командная строка, графический интерфейс) для взаимодействия с Bacula Director. Именно через Console, в частности командную строку, bconsole можно вручную запускать задание на копирование или восстановление. Можно смотреть статус системы, исследовать содержание каталога, ставить метки, монтировать и размонтировать ленты.

$bconsole
Connecting to Director csdmm:9101 
 1000 OK: csdmm.pnpi.spb.ru-dir Version: 2.0.3 (06 March 2007)
Enter a period to cancel a command. 
*

Получить статус Директора командой консоли status director:

*status director 
csdmm.pnpi.spb.ru-dir Version: 2.0.3 (06 March 2007) i686-redhat-linux-gnu redhat 5.3 
Daemon started 16-Фе-2010 12:22, 0 Jobs run since started. 

 Scheduled Jobs: 
Level          Type     Pri  Scheduled          Name               Volume 
=================================================================================== 
Incremental    Backup    10  16-Фе-2010 23:05 BackupClient1      *unknown* 
Full                 Backup    11  16-Фе-2010 23:10 BackupCatalog      *unknown* 
==== 

Running Jobs: 
No Jobs running. 
==== 
No Terminated Jobs. 
==== 
* 

Получить статус Клиента командой консоли status client:

*status client 
Automatically selected Client: csdmm.pnpi.spb.ru-fd 
Connecting to Client csdmm.pnpi.spb.ru-fd at csdmm:9102 

csdmm.pnpi.spb.ru-fd Version: 2.0.3 (06 March 2007)  i686-redhat-linux-gnu redhat 5.3 
Daemon started 16-Фе-2010 12:22, 0 Jobs run since started. 
 
Running Jobs: 
Director connected at: 10-Фе-2010 16:34 
No Jobs running. 
==== 

Terminated Jobs: 
==== 
*

Прежде чем запустить задание на копирование надо пометить том, куда будет идти копирование, командой label:

*label
 Automatically selected Storage: File 
Enter new Volume name: TestVolume1 
Automatically selected Pool: Default 
Connecting to Storage daemon File at csdmm.pnpi.spb.ru:9103 ... 
Sending label command for Volume "TestVolume1" Slot 0 ... 
3000 OK label. VolBytes=217 DVD=0 Volume="TestVolume1" Device="FileStorage" (/tmp) 
Catalog record for Volume "TestVolume1", Slot 0  successfully created. 
Requesting to mount FileStorage ... 
3906 File device "FileStorage" (/tmp) is always mounted. 
*

После этого в директории /tmp появился файл (том) с именем TestVolume1.

Теперь запускаем задание на копирование командой run.

*run 
A job name must be specified. 
The defined Job resources are: 
     1: BackupClient1 
     2: BackupCatalog 
     3: RestoreFiles 
Select Job resource (1-3): 1 
Run Backup job 
JobName:  BackupClient1 
Level:    Incremental 
Client:   csdmm.pnpi.spb.ru-fd 
FileSet:  Full Set 
Pool:     Default (From Job resource) 
Storage:  File (From Job resource) 
When:     2010-02-16 14:37:54 
Priority: 10 
OK to run? (yes/mod/no): yes
Job queued. JobId=3 
You have messages. 
*

После выполнения бэкапа смотрим статус клиента командой status client.

*status client 

* Automatically selected Client: csdmm.pnpi.spb.ru-fd 
Connecting to Client csdmm.pnpi.spb.ru-fd at csdmm.pnpi.spb.ru:9102 

csdmm.pnpi.spb.ru-fd Version: 2.0.3 (06 March 2007)  i686-redhat-linux-gnu redhat 5.3 
Daemon started 16-Фе-2010 12:22, 1 Job run since started. 
Running Jobs: 
Director connected at: 16-Фе-2010 14:40 
No Jobs running. 
==== 

Terminated Jobs: 
 JobId  Level    Files      Bytes   Status   Finished        Name 
====================================================================== 
     3  Full      3,761    308.5 M  OK       16-Фе-2010 14:40 BackupClient1 
====

То есть выполнился полный бэкап клиента, поскольку это самый первый бэкап.

Теперь посмотрим статус Директора.

*status director 
 csdmm.pnpi.spb.ru-dir Version: 2.0.3 (06 March 2007) i686-redhat-linux-gnu redhat 5.3 
Daemon started 16-Фе-2010 12:22, 2 Jobs run since started. 

Scheduled Jobs: 
Level          Type     Pri  Scheduled          Name               Volume 
=================================================================================== 
Incremental    Backup    10  16-Фе-2010 23:05 BackupClient1      TestVolume1 
Full                  Backup    11  16-Фе-2010 23:10 BackupCatalog      TestVolume1 
==== 

Running Jobs: 
No Jobs running. 
==== 

Terminated Jobs: 
 JobId  Level    Files      Bytes   Status   Finished        Name 
==================================================================== 
     3  Full      3,761    308.5 M  OK       16-Фе-2010 14:40 BackupClient1 

==== 
*

Восстановить файл(ы) с бэкапа можно командой консоли restore.

*restore 
First you select one or more JobIds that contain files 
to be restored. You will be presented several methods 
of specifying the JobIds. Then you will be allowed to 
select which files from those JobIds are to be restored. 

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: Cancel 
Select item:  (1-12): 3


Enter JobId(s), comma separated, to restore: 3
You have selected the following JobId: 1 
Building directory tree for JobId 3 ...  +++++++++++++++++++++++++++++++++++++++++++++ 
1 Job, 3,452 files inserted into the tree. 

You are now entering file selection mode where you add (mark) and 
remove (unmark) files to be restored. No files are initially added, unless 
you used the "all" keyword on the command line. 
Enter "done" to leave this mode. 

cwd  is:  / 

$ ls 
etc/ 
sbin/ 
usr/ 
$ cd etc/bacula 
cwd is: /etc/bacula/

Отметим файл /etc/bacula/bacula-dir.conf для восстановления.

$ mark bacula-dir.conf 
 1 file marked. 
$ done
Bootstrap records written to /var/spool/bacula/csdmm.pnpi.spb.ru-dir.restore.1.bsr 

The job will require the following 
   Volume(s)                 Storage(s)                SD Device(s) 
=========================================================================== 
   
   TestVolume1               File                      FileStorage              


1 file selected to be restored. 

Automatically selected Client: csdmm.pnpi.spb.ru-fd 
Run Restore job 
JobName:    RestoreFiles 
Bootstrap:  /var/spool/bacula/csdmm.pnpi.spb.ru-dir.restore.1.bsr 
Where:      /tmp/bacula-restores 
Replace:    always 
FileSet:    Full Set 
Client:     csdmm.pnpi.spb.ru-fd 
Storage:    File 
When:       2010-02-16 15:21:31 
Catalog:    MyCatalog 
Priority:   10 
OK to run? (yes/mod/no): yes
 Job queued. JobId=4
* 
16-Фев 15:22 csdmm.pnpi.spb.ru-dir: Start Restore Job RestoreFiles.2010-02-16_15.22.26 
16-Фев 15:22 csdmm.pnpi.spb.ru-sd: Ready to read from volume "TestVolume1" on device "FileStorage" (/tmp). 
16-Фев 15:22 csdmm.pnpi.spb.ru-sd: Forward spacing Volume "TestVolume1" to file:block 0:217. 
16-Фев 15:22 csdmm.pnpi.spb.ru-sd: End of Volume at file 0 on device "FileStorage" (/tmp), Volume "TestVolume1" 
16-Фев 15:22 csdmm.pnpi.spb.ru-sd: End of all volumes. 
16-Фев 15:22 csdmm.pnpi.spb.ru-dir: Bacula 2.0.3 (06Mar07): 16-Фев-2010 15:22:32 
  JobId:                  4 
  Job:                    RestoreFiles.2010-02-16_15.22.26 
  Client:                 csdmm.pnpi.spb.ru-fd 
  Start time:             16-Фев-2010 15:22:28 
  End time:               16-Фев-2010 15:22:32 
  Files Expected:         1 
  Files Restored:         1 
  Bytes Restored:         8,049 
  Rate:                   2.0 KB/s 
  FD Errors:              0 
  FD termination status:  OK 
  SD termination status:  OK 
  Termination:            Restore OK

В результате вышеприведенных действий файл /etc/bacula/bacula-dir.conf восстановлен в директорию /tmp/bacula-restores.

2.1.9. Работа в Bacula с использованием графического интерфейса (gnome-console)

Более удобно работать в Bacula в графической моде, которая запускается командой gnome-console.

В графической моде можно выполнять все те же операции, что и с помощью команды bconsole. На Рис. 2.2 показан статус Директора в окне gnome-console.

Внизу, в поле Command можно вводить все команды, что и в режиме командной строки.

Графическое окно системы Bacula

Рисунок 2.2. Графическое окно системы Bacula

Для запуска задания на копирование щелкаем на «Run» на верхней панели (Рис. 2.2). На Рис. 2.3 показано окно запуска задания на копирование клиента Client1.

Окно запуска задания на копирование

Рисунок 2.3. Окно запуска задания на копирование

Чтобы восстановить файл, щелкаем на «Restore» на верхней панели. На Рис. 2.4, Рис. 2.5, Рис. 2.6, Рис. 2.7 показан процесс восстановления файла /etc/bacula/bacula-fd.conf в директорию /tmp/bacula-restores.

Диалог восстановления файлов

Рисунок 2.4. Диалог восстановления файлов

Щелкаем на «Select Files».

Панель выбора файлов для восстановления

Рисунок 2.5. Панель выбора файлов для восстановления

Выбираем etc/, затем bacula, затем bacula-fd.conf и щелкаем на «Добавить», после чего видим на Рис. 2.6.

Выбор конкретного файла для восстановления

Рисунок 2.6. Выбор конкретного файла для восстановления

Щелкаем на «OK» и получаем следующее окно gnome-console (см. Рис. 2.7).

Окно с информацией для выполнения задания по
      восстановлению файла

Рисунок 2.7. Окно с информацией для выполнения задания по восстановлению файла

В поле «Command» вводим «yes» и запускается задание на восстановление файла.

2.1.10. Ссылки

  1. Сайт Bacula

    http://www.bacula.org/

  2. Описание Bacula на русском языке

    http://www.bog.pp.ru/work/bacula.html

  3. Краткое описание Bacula на русском языке

    http://www.opennet.ru/soft/Short_Doc_Bacula.pdf