FreeBSD — настройка bacula с SSL шифрованием трафика

Сначала чуть данных из wiki
Bacula — кроссплатформенное клиент-серверное программное обеспечение, позволяющее управлять резервным копированием, восстановлением, и проверкой данных по сети для компьютеров и операционных систем различных типов.
Итак, это то что мне нужно! Более подробно рассмотрим из чего состоит bacula, это даст больше понимания о том как она работает.
Director (DIR) — осуществляет централизованный контроль и администрирование всего комплекса задач. Планирование и управление заданиями на резервное копирование (Job). Обслуживание Каталога (Catalog) — центральной БД для хранения метаданных.
File Daemon (FD) — сервис, выполняющий непосредственное копирование, восстановление и проверку данных по запросу Director. File Daemon должен быть установлен на каждой клиентской машине. File Daemon обменивается информацией с Director и Storage Daemon.
Storage Daemon (SD) — читает и пишет данные на физический носитель: диск, ленту, DVD, USB.
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 в реальном времени.

Вот как выглядит работа настроенной системы:
Bacula applications

Что такого уникального я опишу в данной статье? Зачем она вообще нужна? Такие вопросы лезли мне в голову когда я брался это писать.
Хочу написать, в первую очередь для себя! Дело в том что данную систему я настраивал уже 3 раза и каждый раз рассчитывал на то что «нагуглю» рецепт и спокойненько настрою, тем более что в голове уже есть понимание что к чему. Но каждый раз было одно и тоже — все рецепты в сети оказывались для меня непригодны по разным причинам.
Сразу скажу, эта заметка не подходит для тех кто будет настраивать систему первый раз не имея понимания «что это и как его едят». Делаю для себя чтоб в следующий раз заюзать по принципу «Ctrl + C, Ctrl + V» потом минимально подправил и «поехали». Тут нету разжеванных опций и подробных описаний, за этим либо в google либо на официальный сайт в документацию.

Чего мы хотим?
Я хочу не так много — бекапить сервера через сеть Интернет с шифрованием трафика. Просто звучит, но чтоб настроить придется поработать 🙂

Что нужно подготовить перед тем как взяться за настройку? Многое … пойдем по порядку.
1. Определим кто есть кто! Сразу оговорюсь что все сервера у меня под FreeBSD. Но для Linux статья вполне сойдет, только обратите внимание на пути к директориям/файлам. Также отмечу, что у меня 2 физических сервера, поэтому на одном будет DIR + SD, а второй будет FD (его будем бэкапить). В дальнейшем данное решение абсолютно просто масштабируется. Я опишу это в конце заметки.

dir1.domain.ua — директор, тут же будет расположен каталог (БД mysql)
sd1.domain.ua — сторадж, тут будут храниться бэкапы в виде файлов (pools) на HDD
fd1.domain.ua — клиент, это та машина которую мы будем бэкапить

Эти имена должны правильно резолвиться на любой из данных ПК. Это можно реализовать либо создав соответствующие записи в DNS в виде host A либо просто прописать в /etc/hosts

Например на каждой машине прописать в /etc/hosts

111.111.111.111 dir1.domain.ua sd1.domain.ua
111.111.222.222 fd1.domain.ua

Проверить с помощью ping связь между собой для каждого хоста.

2. Определиться какие части системы на каких хостах (серверах) будут установлены. У меня будет так:
111.111.111.111 — директор (DIR) + БД MySQL (Catalog) + сторадж демон (SD) + консоль управления (Console)
111.111.222.222 — клиент (FD)

3. Настроить фаервол. Если он есть то необходимо открыть порты на вход/выход для хостов:
Console -> DIR:9101
DIR -> SD:9103
DIR -> FD:9102
FD -> SD:9103

4. На директоре установить и настроить MySQL. Я писал об этом ранее, вполне подойдет и для этой задачи.

5. Сгенерить необходимые SSL сертификаты. Этот процесс я также описывал ранее.
Важно! В процессе генерации не забываем прописывать корректно параметр Common Name (eg, YOUR name) Прописывать туда нужно FQDN сервера для которого данный сертификат генерится. Например в процессе генерации запроса на сертификат для сервера fd1.domain.ua параметр Common Name будет fd1.domain.ua Это очень важно!

6. Скопировать сертификаты на хосты. Создаем директорию /usr/local/etc/bacula-ssl и копируем (rsync, scp) туда сертификаты таким образом:
DIR, SD — ca.crt, dir1.crt, dir1.key, sd1.crt, sd1.key
FD — ca.crt, fd1.crt, fd1.key

7. Установить порты (напомню что я настраиваю на FreeBSD):
dir1.domain.ua (он же sd1.domain.ua) — bacula-server с опциями MYSQL, NLS, OPENSSL
fd1.domain.ua — bacula-client с опциями NLS, OPENSSL
И добавить в rc.conf опции для автозагрузки
На сервере dir1.domain.ua

# <= Bacula => #
bacula_dir_enable="YES"
bacula_sd_enable="YES"

На сервере fd1.domain.ua

# <= Bacula => #
bacula_fd_enable="YES"

8. На сервере dir1.domain.ua настроить в MySQL базу данных для bacula. Для этого есть готовые скрипты, которые нужно выполнить от рута:

root@dir1# /usr/local/share/bacula/grant_mysql_privileges
root@dir1# /usr/local/share/bacula/create_mysql_database
Creation of bacula database succeeded.
root@dir1# /usr/local/share/bacula/make_mysql_tables
Creation of Bacula MySQL tables succeeded.
root@dir1#

9. Создать на сервере хранения директорию для бэкапов и дать права :

root@dir1# mkdir -p /home/bacula/pools

И дать права бакуле туда писать/читать:

root@dir1# chown bacula:bacula /home/bacula

10. Ну и собственно сами конфиги, начнем с простого — файл-сервер (FD), это у нас хост fd1.domain.ua
Ранее мы на этом серваке установили bacula-client и настроили его автозапуск.
Также напомню что на сервере уже должны быть сертификаты, у меня они расположены в /usr/local/etc/bacula-ssl:

root@fd1:~# ls -l /usr/local/etc/bacula-ssl/
total 16
-rw-r--r--  1 root  bacula  1655 23 окт 15:38 ca.crt
-rw-r--r--  1 root  bacula  4632 23 окт 15:43 fd1.crt
-rw-r--r--  1 root  bacula  1679 23 окт 15:42 fd1.key
root@fd1:~#

Теперь настроим конфиг:

root@fd1:~# cat /usr/local/etc/bacula/bacula-fd.conf |egrep -v '^#|^$'
Director {
  Name = dir1
  Password = "fd1_5XLGGiNNxLfjMxCcfgLM"
  TLS Enable = yes
  TLS Require = yes
  TLS Certificate = /usr/local/etc/bacula-ssl/fd1.crt
  TLS Key = /usr/local/etc/bacula-ssl/fd1.key
  TLS CA Certificate File = /usr/local/etc/bacula-ssl/ca.crt
  TLS Verify Peer = yes
  TLS Allowed CN = "fd1.domain.ua"
  TLS Allowed CN = "sd1.domain.ua"
  TLS Allowed CN = "dir1.domain.ua"
}
FileDaemon {
  Name = fd1
  FDport = 9102
  WorkingDirectory = /var/db/bacula
  Pid Directory = /var/run
  Maximum Concurrent Jobs = 20
  FDAddress = fd1.domain.ua
  Heartbeat Interval = 30 sec
  TLS Enable = yes
  TLS Require = yes
  TLS Certificate = /usr/local/etc/bacula-ssl/fd1.crt
  TLS Key = /usr/local/etc/bacula-ssl/fd1.key
  TLS CA Certificate File = /usr/local/etc/bacula-ssl/ca.crt
}
Messages {
  Name = Standard
  director = dir1 = all, !skipped, !restored
}
root@fd1:~#

Ну вот, первая ласточка пошла 🙂 УРА! Перегрузите сервис (или запустите) стандартными средствами:

root@fd1:~# service bacula-fd restart

Настройку FD можно считать завершенной! Идем дальше …

11. Дальше чуть сложнее но тоже осилим! Настройка сервера хранения бэкапов (SD) — это у нас хост sd1.domain.ua Напомню что у меня DIR и SD на одном сервере, если у вас на разных, предварительно нужно на SD-сервер скопировать необходимые сертификаты ca.crt, sd1.crt и ключ sd1.key

root@dir1:~# cat /usr/local/etc/bacula/bacula-sd.conf |egrep -v '^#|^$'
Storage {
  Name = sd1
  SDPort = 9103
  WorkingDirectory = "/var/db/bacula"
  Pid Directory = "/var/run"
  Maximum Concurrent Jobs = 20
  SDAddress = sd1.domain.ua
  Heartbeat Interval = 30 sec
  TLS Enable = yes
  TLS Require = yes
  TLS Verify Peer = no
  TLS CA Certificate File = /usr/local/etc/bacula-ssl/ca.crt
  TLS Key = /usr/local/etc/bacula-ssl/sd1.key
  TLS Certificate = /usr/local/etc/bacula-ssl/sd1.crt
}
Director {
  Name = dir1
  Password = "sd1_ho6a&teSuA@CC2HnEEgu"
  TLS Enable = yes
  TLS Require = yes
  TLS Verify Peer = yes
  TLS Allowed CN = "fd1.domain.ua"
  TLS Allowed CN = "dir1.domain.ua"
  TLS CA Certificate File = /usr/local/etc/bacula-ssl/ca.crt
  TLS Key = /usr/local/etc/bacula-ssl/sd1.key
  TLS Certificate = /usr/local/etc/bacula-ssl/sd1.crt
}
Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /home/bacula/pools
  LabelMedia = yes;
  Random Access = Yes;
  AutomaticMount = yes;
  RemovableMedia = no;
  AlwaysOpen = no;
}
Messages {
  Name = Standard
  director = dir1 = all
}
root@dir1:~#

Перегрузите сервис (или запустите) стандартными средствами:

root@dir1:~# service bacula-sd restart

Настройку SD можно считать завершенной! Идем дальше …

12. Настроим директор (DIR) — это основная часть системы. Тут будет много всяких параметров, углубляться не буду, для этого есть официальные доки. Вот что у меня:

root@dir1:~# cat /usr/local/etc/bacula/bacula-dir.conf |egrep -v '^#|^$'
Director {
  Name = dir1
  DIRport = 9101
  QueryFile = "/usr/local/share/bacula/query.sql"
  WorkingDirectory = "/var/db/bacula"
  PidDirectory = "/var/run"
  Maximum Concurrent Jobs = 1
  Password = "dir1_Ag@6Uzp8tHUW6PuRumc"
  Messages = Daemon
  DirAddress = dir1.domain.ua
  Heartbeat Interval = 30 sec
  TLS Enable = yes
  TLS Require = yes
  TLS Certificate = /usr/local/etc/bacula-ssl/dir1.crt
  TLS Key = /usr/local/etc/bacula-ssl/dir1.key
  TLS CA Certificate File = /usr/local/etc/bacula-ssl/ca.crt
  TLS Verify Peer = yes
  TLS Allowed CN = "fd1.domain.ua"
  TLS Allowed CN = "sd1.domain.ua"
  TLS Allowed CN = "dir1.domain.ua"
}
Job {
  Name = "RestoreFiles"
  Type = Restore
  Client=fd1                
  FileSet="Full Set"                  
  Storage = sd1                      
  Pool = Default
  Messages = Standard
  Where = /tmp/bacula-restores
}
FileSet {
  Name = "Full Set"
  Include {
    Options {
      signature = MD5
    }
    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
}
Schedule {
  Name = "WeeklyCycleAfterBackup"
  Run = Full sun-sat at 23:10
}
FileSet {
  Name = "Catalog"
  Include {
    Options {
      signature = MD5
    }
    File = "/var/db/bacula/bacula.sql"
  }
}
Storage {
  Name = sd1
  Address = sd1.domain.ua                # Use ONLY a FQDN here
  SDPort = 9103
  Password = "sd1_ho6a&teSuA@CC2HnEEgu"
  Device = FileStorage
  Media Type = File
  TLS Enable = yes
  TLS Require = yes
  TLS Certificate = /usr/local/etc/bacula-ssl/fd1.crt
  TLS Key = /usr/local/etc/bacula-ssl/fd1.key
  TLS CA Certificate File = /usr/local/etc/bacula-ssl/ca.crt
}
Catalog {
  Name = MyCatalog
  dbname = "BACULA_DB"; DB Address = "127.0.0.1"; dbuser = "BACULA_USER"; dbpassword = "bacula_db_password"
}
Messages {
  Name = Standard
  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 = admin@domain.ua = all, !skipped            
  operator = admin@domain.ua = mount
  console = all, !skipped, !saved
  append = "/var/log/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 = admin@domain.ua = all, !skipped            
  console = all, !skipped, !saved
  append = "/var/log/bacula.log" = all, !skipped
}
Pool {
  Name = Default
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
}
Pool {
  Name = File
  Pool Type = Backup
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 90 days          # 90 days
  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
  Maximum Volumes = 100               # Limit number of Volumes in Pool
}
Pool {
  Name = Scratch
  Pool Type = Backup
}
Console {
  Name = mon
  Password = "console_"
  CommandACL = status, .status
}
@/usr/local/etc/bacula-fd1.conf
root@dir1:~#

Что такого необычного мы видим в этом конфиге? Да ничего особенного, все просто «как двери». В конце данного конфига включен дополнительный файл настроек, в котором прописаны уникальные настройки для fd1.

13. И наконец конфиг бэкапа для fd1, тот что /usr/local/etc/bacula-fd1.conf

root@dir1:~# cat /usr/local/etc/bacula-fd1.conf |egrep -v '^#|^$'
Job {
    Name = "www-backup"
    Type = Backup
    Level = Full
    Client = fd1
    FileSet = "www Set"
    Schedule = "WeeklyCycle_www"
    Messages = Standard
    Pool = www-pool
    Full Backup Pool = www-pool-FULL
    Differential Backup Pool = www-pool-DIFF
    Incremental Backup Pool = www-pool-INCR
    Write Bootstrap = "/var/db/bacula/www-fd1.bsr"
    Priority = 3
}
FileSet {
  Name = "www Set"
  Include {
    Options {
      signature = MD5
      compression = GZIP
      recurse = yes
      xattrsupport = yes
    }
    File = /etc
    File = /usr/local/etc
    File = /home/backup
    File = /root
    File = /usr/local/www
    File = /usr/home/user1/htdocs
    File = /usr/home/user2/htdocs
    File = /usr/home/user3/htdocs
  }
  Exclude {
    File = /usr/local/www/apache22/data/somedomain.org.ua/drupal/sites/default/files
  }
}
Schedule {
  Name = "WeeklyCycle_www"
  Run = Level=Full 1st sun at 4:05
  Run = Level=Differential 2nd-5th sun at 4:02
  Run = Level=Incremental mon-sat at 4:07
}
Client {
  Name = fd1
  Address = fd1.domain.ua
  FDPort = 9102
  Catalog = MyCatalog
  Password = "fd1_5XLGGiNNxLfjMxCcfgLM"
  File Retention = 45 days
  Job Retention = 6 months
  AutoPrune = yes
  TLS Enable = yes
  TLS Require = yes
  TLS Certificate = /usr/local/etc/bacula-ssl/fd1.crt
  TLS Key = /usr/local/etc/bacula-ssl/fd1.key
  TLS CA Certificate File = /usr/local/etc/bacula-ssl/ca.crt
}
Pool {
  Name = www-pool
  Pool Type = Backup
  Recycle = yes                     # Bacula can automatically recycle Volumes
  AutoPrune = yes                   # Prune expired volumes
  Volume Retention = 65 days        # 65 days
  Recycle Oldest Volume = yes
  Maximum Volume Bytes = 4400m      # Limit Volume size to something reasonable
  Maximum Volumes = 7               # Limit number of Volumes in Pool
  Label Format = "www_pool-vol"
  Storage = sd1
}
Pool {
  Name = www-pool-FULL
  Pool Type = Backup
  Recycle = yes                     # Bacula can automatically recycle Volumes
  AutoPrune = yes                   # Prune expired volumes
  Volume Retention = 60 days        # 60 days
  Recycle Oldest Volume = yes
  Maximum Volume Bytes = 4400m      # Limit Volume size to something reasonable
  Maximum Volumes = 7               # Limit number of Volumes in Pool
  Label Format = "www_pool-FULL-vol"
  Storage = sd1
}
Pool {
  Name = www-pool-DIFF
  Pool Type = Backup
  Recycle = yes                     # Bacula can automatically recycle Volumes
  AutoPrune = yes                   # Prune expired volumes
  Volume Retention = 60 days        # 60 days
  Recycle Oldest Volume = yes
  Maximum Volume Bytes = 4400m      # Limit Volume size to something reasonable
  Maximum Volumes = 7               # Limit number of Volumes in Pool
  Label Format = "www_pool-DIFF-vol"
  Storage = sd1
}
Pool {
  Name = www-pool-INCR
  Pool Type = Backup
  Recycle = yes                     # Bacula can automatically recycle Volumes
  AutoPrune = yes                   # Prune expired volumes
  Volume Retention = 60 days        # 60 days
  Recycle Oldest Volume = yes
  Maximum Volume Bytes = 4400m      # Limit Volume size to something reasonable
  Maximum Volumes = 7               # Limit number of Volumes in Pool
  Label Format = "www_pool-INCR-vol"
  Storage = sd1
}
root@dir1:~#

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

Перегрузите сервис (или запустите) стандартными средствами:

root@dir1:~# service bacula-dir restart

Настройку DIR можно считать завершенной! Идем дальше …

14. Настроим консоль. Консоль я буду пользовать на сервере там же где и директор (dir1). Для настройки рихтуем конфиг:

root@dir1:~# cat /usr/local/etc/bacula/bconsole.conf
#
# Bacula User Agent (or Console) Configuration File
#

Director {
  Name = dir1
  DIRport = 9101
  address = dir1.domain.ua
  Password = "dir1_Ag@6Uzp8tHUW6PuRumc"

  TLS Enable = yes
  TLS Require = yes
  TLS Certificate = /usr/local/etc/bacula-ssl/dir1.crt
  TLS Key = /usr/local/etc/bacula-ssl/dir1.key
  TLS CA Certificate File = /usr/local/etc/bacula-ssl/ca.crt
}
root@dir1:~#

Настройку консоли можно считать завершенной.

15. Тестируем! Для этого на сервере dir1.domain.ua запускаем в root-овой консоли bconsole:

root@dir1:~# bconsole
Connecting to Director dir1.domain.ua:9101
1000 OK: dir1 Version: 5.2.12 (12 September 2012)
Enter a period to cancel a command.
*

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

*status all
dir1 Version: 5.2.12 (12 September 2012) i386-portbld-freebsd9.0 freebsd 9.0-RELEASE-p3
Daemon started 23-Mar-14 20:36. Jobs: run=4, running=0 mode=0,0
 Heap: heap=0 smbytes=80,026 max_bytes=113,890 bufs=296 max_bufs=327

Scheduled Jobs:
Level          Type     Pri  Scheduled          Name               Volume
===================================================================================
Incremental    Backup     3  28-Mar-14 04:07    www-backup         Vol_1
====

Running Jobs:
Console connected at 27-Mar-14 11:16
No Jobs running.
====

Terminated Jobs:
 JobId  Level    Files      Bytes   Status   Finished        Name
====================================================================
   379  Incr        101    6.737 M  OK       18-Mar-14 04:07 www-backup
   380  Incr         27    6.536 M  OK       19-Mar-14 04:07 www-backup
   381  Incr      1,634    18.16 M  OK       20-Mar-14 04:07 www-backup
   382  Incr         18    6.401 M  OK       21-Mar-14 04:07 www-backup
   383  Incr         17    6.402 M  OK       22-Mar-14 04:07 www-backup
   384  Diff         42    18.34 M  Error    23-Mar-14 04:02 www-backup
   385  Incr         27    12.79 M  OK       24-Mar-14 04:07 www-backup
   386  Incr      1,413    15.02 M  OK       25-Mar-14 04:07 www-backup
   387  Incr         22    6.412 M  OK       26-Mar-14 04:07 www-backup
   388  Incr         29    6.863 M  OK       27-Mar-14 04:07 www-backup

====
Connecting to Storage daemon sd1 at sd1.domain.ua:9103

sd1 Version: 5.2.12 (12 September 2012) i386-portbld-freebsd9.0 freebsd 9.0-RELEASE-p3
Daemon started 23-Mar-14 20:36. Jobs: run=4, running=0.
 Heap: heap=0 smbytes=90,823 max_bytes=224,190 bufs=93 max_bufs=113
 Sizes: boffset_t=8 size_t=4 int32_t=4 int64_t=8 mode=0,0

Running Jobs:
No Jobs running.
====

Jobs waiting to reserve a drive:
====

Terminated Jobs:
 JobId  Level    Files      Bytes   Status   Finished        Name
===================================================================
   379  Incr        101    6.755 M  OK       18-Mar-14 04:07 www-backup
   380  Incr         27    6.540 M  OK       19-Mar-14 04:07 www-backup
   381  Incr      1,634    18.39 M  OK       20-Mar-14 04:07 www-backup
   382  Incr         18    6.403 M  OK       21-Mar-14 04:07 www-backup
   383  Incr         17    6.405 M  OK       22-Mar-14 04:07 www-backup
   384  Diff         42    18.14 M  Error    23-Mar-14 04:02 www-backup
   385  Incr         27    12.80 M  OK       24-Mar-14 04:07 www-backup
   386  Incr      1,413    15.22 M  OK       25-Mar-14 04:07 www-backup
   387  Incr         22    6.416 M  OK       26-Mar-14 04:07 www-backup
   388  Incr         29    6.867 M  OK       27-Mar-14 04:07 www-backup
====

Device status:
Device "FileStorage" (/home/bacula/pools) is not open.
====

Used Volume status:
====

====

Connecting to Client fd1 at fd1.domain.ua:9102

fd1 Version: 5.2.12 (12 September 2012)  amd64-portbld-freebsd9.0 freebsd 9.0-RELEASE-p3
Daemon started 20-Mar-14 12:11. Jobs: run=7 running=0.
 Heap: heap=0 smbytes=23,861 max_bytes=372,763 bufs=73 max_bufs=215
 Sizeof: boffset_t=8 size_t=8 debug=0 trace=0
Running Jobs:
Director connected at: 27-Mar-14 11:16
No Jobs running.
====

Terminated Jobs:
 JobId  Level    Files      Bytes   Status   Finished        Name
======================================================================
   379  Incr        101    6.737 M  OK       18-Mar-14 04:07 www-backup
   380  Incr         27    6.536 M  OK       19-Mar-14 04:07 www-backup
   381  Incr      1,634    18.16 M  OK       20-Mar-14 04:07 www-backup
   382  Incr         18    6.401 M  OK       21-Mar-14 04:07 www-backup
   383  Incr         17    6.402 M  OK       22-Mar-14 04:07 www-backup
   384  Diff         42    18.34 M  Error    23-Mar-14 04:02 www-backup
   385  Incr         27    12.79 M  OK       24-Mar-14 04:07 www-backup
   386  Incr      1,413    15.02 M  OK       25-Mar-14 04:07 www-backup
   387  Incr         22    6.412 M  OK       26-Mar-14 04:07 www-backup
   388  Incr         29    6.863 M  OK       27-Mar-14 04:07 www-backup
====

*

Можно ради интереса запустить бэкап прямо сейчас, не дожидаясь ночного автозапуска (учтите нагрузку на сервер! Если у вас боевой сервер — лучше это делать в момент наименьшей нагрузки … вечером/ночью/рано утром):

*run job=www-backup

И через пару минут опять проверить статус, задание должно быть либо в процессе либо выполнено.

16. И пара слов про восстановление. В случай необходимости восстановить файлы идем в консоль и делаем следующее:

*restore

После чего выбрать те Job в которых находится необходимый вам файл. В случае как у меня, когда делается full бэкап раз в месяц, а каждый день либо diff либо incremental — нужно выбирать все Job-ы от full и до последнего Incremental-а. Дальше все просто, следуйте указаниям мастера восстановления.

Что делать если хотим добавить еще один FD в эту систему?
Да все проще простого:
— на новом сервере fd2 установить bacula-client и настроить также как описано выше для fd1
— на сервере dir1 копируем файлик настроек FD /usr/local/etc/bacula-fd1.conf в какойнить /usr/local/etc/bacula-fd2.conf
— генерим для fd2.domain.ua сертификат и ключ
— прописываем FileSet в новом конфиге и меняем пароль/сертификаты. По желанию можно по-другому назвать пулы или перестроить время бэкапа
Вот собственно, и все. 5 минут работы и сервак добавлен в систему. Просто? Ато!
Так же просто «перенести» SD на другую железку. Или подключить второй SD, для того чтобы разные FD бэкапить на разные SD. Система очень гибко настраивается — это дополнительный плюс.

P.S. Получилось не очень стройно, както сумбурно и не особо детально. Но статья рассчитана скорее на человека который уже имеет понимание и просто хочет «по быстрому подкинуть конфиги» и с минимальными правками стартонуть систему, а не на тех кто совсем с нуля осваивается. Можно конечно и с нуля разобраться, но придется изрядно поглядеть в официальные доки.

  1. Комментов пока нет

  1. Трэкбэков пока нет.

Why ask?