What is bacula?

Pools

GET /api/pools/ — get records all pools.

GET /api/pools/limit/15 — get records first 15 pools.

GET /api/pools/7 — get records only for pool with poolid equal 7.

GET /api/pools/show — get ‘show pools’ bconsole command.

GET /api/pools/show/7 — get ‘show pool=xxx’ bconsole command for pool with poolid equal 7.

PUT /api/pools/update/7 — call ‘update pool=xxx’ bconsole command for pool with poolid equal 7.

Errors:

0 — No errors.

1 — Invalid command.

2 — Problem with connection to database.

3 — Database access is not supported by this API instance.

4 — Problem with connection to bconsole.

5 — Invalid director.

6 — Problem with authorization to Baculum API.

7 — Access attempt to not allowed resource. Permission denied.

11 — Bconsole support is disabled.

40 — Pool with inputted poolid does not exists.

1000 — internal error.

Conventions Used in this Document

Bacula is in a state of evolution, and as a consequence, this manual will not always agree with the code. If an item in this manual is preceded by an asterisk (*), it indicates that the particular feature is not implemented. If it is preceded by a plus sign (+), it indicates that the feature may be partially implemented.

If you are reading this manual as supplied in a released version of the software, the above paragraph holds true. If you are reading the online version of the manual, www.bacula.orghttp://www.bacula.org, please bear in mind that this version describes the current version in development (in the CVS) that may contain features not in the released version. Just the same, it generally lags behind the code a bit.

Карьера

«Квантовый скачок» позволил Бакуле реализоваться в качестве актера. Природа роли позволила ему показать себя как разнопланового актера, а широкий показ сериала принес определенную известность, которая помогла получить новые интересные предложения. Такие как роль капитана Джонатана Арчера во франшизе Звездный путь. Со слов Бакулы, он прочитал сценарий «Красоты по американски», он ему так понравился, его наняли и все же он очень волновался.

Личная жизнь

В 1981 году женился на Кристе Ньюман (Krista Neumann), в 1995 году они развелись. От этого брака двое детей — Челси (род.1984) и Коди (1991 — приемный).

В данный момент женат на актрисе Челси Филд, с которой встречался почти 16 лет. Пара оформила отношения в декабре 2010 года. Скотт и Челси имеют двух детей — Уилла и Оуэна.

Настройка Bacula для PostgreSQL[править]

Настройка клиентаправить

Внимание! Для работы с Bacula на сервере PostgreSQL должно быть настроено онлайн резервирование )

На клиенте в каталоге /etc/bacula создадим следующие скрипты:pre-base-backup.sh:

#!/bin/bash
DATE=`date +"%b %d %T"`
/usr/bin/pg_basebackup -D /var/lib/pgsql/backup -F t -z -U postgres -w -c fast -l "pg_basebackup ${DATE}"

Этот скрипт создает полную копию базы данных и выполняется перед выполнением задачи резервного копирования базы.post-base-backup.sh:

#!/bin/bash
rm -f /var/lib/pgsql/backup/*

Этот скрипт удаляет созданную копию базы данных и будет выполнен после задачи резервного копирования базы.pre-logs-backup.sh:

#!/bin/bash
touch /var/lib/pgsql/backup_in_progress

Этот скрипт создает файл backup_in_progress и выполняется перед выполнением задачи резервного копирования журналов. Этот файл нужен, чтобы во время резервного копирования PostgreSQL не архивировал новые журналы ()post-logs-backup.sh:

#!/bin/bash
rm -f /var/lib/pgsql/wals/*
rm -f /var/lib/pgsql/backup_in_progress

Этот скрипт очищает каталог с журналами и файл backup_in_progress, и будет выполнен после задачи резервного копирования журналов.
Далее необходимо сделать эти скрипты исполняемыми:

# chmod 750 pre-base-backup.sh
# chmod 750 post-logs-backup.sh
# chmod 750 post-base-backup.sh
# chmod 750 pre-logs-backup.sh

На этом настройка клиента завершена.

Настройка сервераправить

Для онлайн резервного копирования PostgreSQL необходимо добавить в Bacula клиента и создать для него задачи. В этом примере рассмотрим настройку на примере клиента zabbix-fd.

Списки файловправить

Создадим списки файлов для резервного копирования в каталоге /etc/bacula/fileset.d:
Список для копирования полной резервной копии базы PGSQL-Full-Base-set.conf:

FileSet {
  Name = "PGSQL-Full-Base-set"
  Include {
    Options {
      signature = MD5
      Sparse = yes
      aclsupport = yes
      xattrsupport = yes
     }
    File = "/var/lib/pgsql/backup"
    }
}

Журналыправить

Список для копирования журналов PGSQL-Logs-set.conf:

FileSet {
  Name = "PGSQL-Logs-set"
  Include {
    Options {
      signature = MD5
      Sparse = yes
      aclsupport = yes
      xattrsupport = yes
     }
    File = "/var/lib/pgsql/wals"
    }
}

Пулправить

Создадим отдельный пул для наших бекапов в каталоге /etc/bacula/pool.d:
Файл zabbix.conf:

Pool {
  Name = Zabbix
  Pool Type = Backup
  Recycle = yes                       
  AutoPrune = yes                    
  Volume Retention = 365 days        
  LabelFormat = "zabbix"
}

Расписанияправить

Создадим расписания для резервирования базы и журналов в каталоге /etc/bacula/schedule.d:
Файл PGSQL-Full-Base-Cycle.conf:

Schedule {
  Name = "PGSQL-Full-Base-Cycle"
  Run = Full sun at 01:00 # задание будет выполнять полный бэкап каждое воскресенье в 01:00
}

файл PGSQL-Logs-Cycle.conf:

Schedule {
  Name = "PGSQL-Logs-Cycle"
  Run = Incremental mon-sat at 01:30 # задание будет выполнять инкрементальный бэкап каждый день с пн-сб в 01:30
}

Задачиправить

Создадим задачи резервного копирования в каталоге /etc/bacula/job.d:
Задача резервного копирования базы zabbix-pgsql-base-fd.conf:

Job {
  Name = "zabbix-pgsql-base-fd"
  JobDefs = "DefaultJob"
  Client = zabbix-fd
  FileSet = "PGSQL-Full-Base-set"
  Accurate = no
  Pool = Zabbix
  Priority = 10 # приоритет выполнения задачи
  Schedule = "PGSQL-Full-Base-Cycle"
  ClientRunBeforeJob = "/etc/bacula/pre-base-backup.sh" # скрипт выполняющийся до задачи
  ClientRunAfterJob = "/etc/bacula/post-base-backup.sh" # скрипт выполняющийся после задачи
}

Задача резервного копирования журналов zabbix-pgsql-logs-fd.conf:

Job {
  Name = "zabbix-pgsql-logs-fd"
  JobDefs = "DefaultJob"
  Client = zabbix-fd
  FileSet = "PGSQL-Logs-set"
  Accurate = no
  Pool = Zabbix
  Priority = 11 # приоритет ниже чем у задачи резервного копирования базы
  Schedule = "PGSQL-Logs-Cycle"
  ClientRunBeforeJob = "/etc/bacula/pre-logs-backup.sh" # скрипт выполняющийся до задачи
  ClientRunAfterJob = "/etc/bacula/post-logs-backup.sh"# скрипт выполняющийся после задачи
}

Теперь необходимо перезапустить сервис Bacula Director:

# systemctl restart bacula-dir

Знакомимся с Bacula

Существует несколько свободных программных продуктов, позволяющих автоматизировать резервное копирование. Наиболее известные и функциональные – Bacula и Amanda. В этой статье мы рассмотрим первую из них.

Bacula – это система централизованного резервирования информационных ресурсов, основными преимуществами которой являются:

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

Система построена по технологии клиент-сервер, и для передачи данных использует протокол TCP. Резервные копии создаются в собственном, полностью открытом формате.

Система резервирования данных Bacula состоит из четырёх основных элементов: Director Daemon, Storage Daemon, File Daemon и Bacula Console. Все эти элементы реализованы в виде самостоятельных приложений.

Director Daemon (DD) – это центральный элемент системы, осуществляющий управление её остальными компонентами. В его задачи входит управление процессом резервирования/восстановления данных, обеспечение интерфейса управления для администраторов и многое другое. Говоря проще – это диспетчер, который инициирует все процессы и отслеживает ход их выполнения.

Storage Daemon (SD) – приложение, отвечающее за чтение/запись данных непосредственно на устройства хранения информации. Принимает управляющие команды от DD, а также резервируемые данные от/к File Daemon.

File Daemon (FD) – этот элемент ещё можно назвать Агентом. Ведь именно он работает в рамках операционной системы, данные которой необходимо резервировать. File Daemon выполняет всю рутину, осуществляя обращение к резервируемым файлам и их дальнейшую передачу к SD. Также на стороне FD выполняется шифрование резервных копий, если это определено конфигурацией.

Bacula Console (BC) – интерфейс администратора сиcтемы. По своей сути, это командный интерпретатор для управления Bacula. Строго говоря, Bacula Console может быть расширена с помощью графических систем управления, которые, как правило, являются всего лишь надстройкой над BC. К таким системам можно отнести Tray Monitor и Bat. Первая устанавливается на компьютере администратора системы и осуществляет наблюдение за работой системы резервирования, а вторая обеспечивает возможность управления посредством графического интерфейса.

Bacula Catalog – база данных, в которой хранятся сведения обо всех зарезервированных файлах и их местонахождении в резервных копиях. Каталог необходим для обеспечения эффективной адресации к требуемым файлам. Поддерживаются MySql, PostgreSql и SqLite.

Такое структурное деление позволяет организовать очень гибкую систему резервирования, когда Storage Daemon разворачивается на выделенном сервере с несколькими устройствами хранения данных. Также Bacula Director может управлять несколькими экземплярами SD, обеспечивая резервирование части данных на одно устройство хранения, а части – на другое.

Если ваша инфраструктура включает в себя всего один сервер, то все необходимые элементы могут быть развёрнуты на нём. Более подробную информацию вы можете получить из подробного руководства администратора на официальном сайте http://bacula.org.

Clients

GET /api/clients — get records all clients

GET /api/clients/limit/4 — get records first 4 clients

GET /api/clients/2 — get records only for client with clientid equal 2

GET /api/clients/show — get ‘show clients’ bconsole command

GET /api/clients/show/2 — get ‘show client=xxx’ bconsole command for client with clientid equal 2

GET /api/clients/status/2 — get ‘status client=xxx’ bconsole command for client with clientid equal 2

GET /api/clients/jobs/2 — get all jobs done by client with clientid equal 2

Errors:

0 — No errors.

1 — Invalid command.

2 — Problem with connection to database.

3 — Database access is not supported by this API instance.

4 — Problem with connection to bconsole.

5 — Invalid director.

6 — Problem with authorization to Baculum API.

7 — Access attempt to not allowed resource. Permission denied.

10 — Client with inputted clientid does not exists.

11 — Bconsole support is disabled.

1000 — Internal error.

Заключение

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

Так, rsync/rsnapshot имеет смысл применять, если у тебя всего пара-тройка серверов и ты хочешь всего лишь время от времени сохранять каталог /etc и прочие текстовые конфиги. Примерно для этих же целей предназначен и Cedar Backup — отличие разве что в том, что последний не синхронизирует по сети, а записывает на болванку и позволяет шифровать бэкапы, для восстановления которых потребуется приложить некоторые усилия.

Любителям облачных решений, несомненно, придется по вкусу Duplicity и его графический фронтенд Deja-Dup. Для домашних пользователей это действительно простое и удобное решение, позволяющее не только бэкапить (и шифровать по желанию), но и в случае чего достаточно быстро восстанавливать как бэкапы целиком, так и отдельные файлы.

В том же случае, когда ты будешь обслуживать сеть среднего или тем паче крупного масштаба, имеет смысл обратить внимание на Bacula, который и предназначен для подобных целей и в котором есть в том числе независимость от стандартного *nix-планировщика и шифрование резервных копий, то есть два из трех пунктов, о которых говорилось во введении

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector