Это старая версия документа.


Bacula

Bacula - это программа резервного копирования, позволяющая вам сохранять, восстанавливать и проверять данные через вашу сеть. Для Bacula существуют клиенты под Linux, Windows и Mac OS X, превращая ее в кросс-платформенное сетевое решение.

Обзор

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

~~ **Bacula Director**: сервис, который управляет всеми операциями резервного копирования, восстановления, проверки и архивации.
~~ **Bacula Console**: приложение, позволяющее взаимодействовать с **Director**. Существует три версии **Console**:
  ~~ текстовая версия, основанная на командной строке.
  ~~ графический пользовательский интерфейс (GUI) для **Gnome**, основанный на GTK+.
  ~~ графический интерфейс на базе wxWidgets.
~~ **Bacula File**: она же программа **Bacula Client**. Это приложение устанавливается на машине, на которой производится резервное копирование, и оно отвечает на данные, отправленные по запросу **Director**.
~~ **Bacula Storage**: программа, которая выполняет хранение и восстановление данных на физических носителях.
~~ **Bacula Catalog**: отвечает за поддержку файловых индексов и томов баз данных для всех сохраняемых фалов, допуская быстрое нахождение и восстановление сохраненных файлов. **Catalog** поддерживает три различных базы данных: MySQL, PostgreSQL и SQLite.
~~ **Bacula Monitor**: позволяет отслеживать работу **Director** и сервисов **File** и **Storage**. На данный момент **Monitor** доступен только в виде GTK+ GUI приложения.

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

Установка

If using MySQL or PostgreSQL as your database, you should already have the services available. Bacula will not install them for you.

There are multiple packages containing the different Bacula components. To install Bacula, from a terminal prompt enter:

sudo apt-get install bacula

By default installing the bacula package will use a MySQL database for the Catalog. If you want to use SQLite or PostgreSQL, for the Catalog, install bacula-director-sqlite3 or bacula-director-pgsql respectively.

During the install process you will be asked to supply credentials for the database administrator and the bacula database owner. The database administrator will need to have the appropriate rights to create a database, see MySQL for more information.

Настройка

Bacula configuration files are formatted based on resources comprising of directives surrounded by “{}” braces. Each Bacula component has an individual file in the /etc/bacula directory.

The various Bacula components must authorize themselves to each other. This is accomplished using the password directive. For example, the Storage resource password in the /etc/bacula/bacula-dir.conf file must match the Director resource password in /etc/bacula/bacula-sd.conf.

By default the backup job named Client1 is configured to archive the Bacula Catalog. If you plan on using the server to backup more than one client you should change the name of this job to something more descriptive. To change the name edit /etc/bacula/bacula-dir.conf:

# # Define the main nightly save backup job # By default, this job will back up to disk in Job {

Name = "BackupServer"
JobDefs = "DefaultJob"
Write Bootstrap = "/var/lib/bacula/Client1.bsr"

}

The example above changes the job name to BackupServer matching the machine's host name. Replace “BackupServer” with your appropriate hostname, or other descriptive name.

The Console can be used to query the Director about jobs, but to use the Console with a non-root user, the user needs to be in the bacula group. To add a user to the bacula group enter the following from a terminal:

sudo adduser $username bacula

Replace $username with the actual username. Also, if you are adding the current user to the group you should log out and back in for the new permissions to take effect.

Резервное копирование локальной системы

This section describes how to backup specified directories on a single host to a local tape drive.

  First, the Storage device needs to be configured. Edit /etc/bacula/bacula-sd.conf add:
  Device {
    Name = "Tape Drive"
    Device Type = tape
    Media Type = DDS-4
    Archive Device = /dev/st0
    Hardware end of medium = No;
    AutomaticMount = yes;               # when device opened, read it
    AlwaysOpen = Yes;
    RemovableMedia = yes;
    RandomAccess = no;
    Alert Command = "sh -c 'tapeinfo -f %c | grep TapeAlert'"
  }
  The example is for a DDS-4 tape drive. Adjust the “Media Type” and “Archive Device” to match your hardware.
  You could also uncomment one of the other examples in the file.
  After editing /etc/bacula/bacula-sd.conf the Storage daemon will need to be restarted:
  sudo /etc/init.d/bacula-sd restart
  Now add a Storage resource in /etc/bacula/bacula-dir.conf to use the new Device:
  # Definition of "Tape Drive" storage device
  Storage {
    Name = TapeDrive
    # Do not use "localhost" here    
    Address = backupserver               # N.B. Use a fully qualified name here
    SDPort = 9103
    Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3LT3Cgkiyjc"
    Device = "Tape Drive"
    Media Type = tape
  }
  The Address directive needs to be the Fully Qualified Domain Name (FQDN) of the server. Change backupserver to the actual host name.
  Also, make sure the Password directive matches the password string in /etc/bacula/bacula-sd.conf.
  Create a new FileSet, which will determine what directories to backup, by adding:
  # LocalhostBacup FileSet.
  FileSet {
    Name = "LocalhostFiles"
    Include {
      Options {
        signature = MD5
        compression=GZIP
      }
      File = /etc
      File = /home
    }
  }
  This FileSet will backup the /etc and /home directories. The Options resource directives configure the FileSet to create an MD5 signature for each file backed up, and to compress the files using GZIP.
  Next, create a new Schedule for the backup job:
  # LocalhostBackup Schedule -- Daily.
  Schedule {
    Name = "LocalhostDaily"
    Run = Full daily at 00:01
  }
  The job will run every day at 00:01 or 12:01 am. There are many other scheduling options available.
  Finally create the Job:
  # Localhost backup.
  Job {
    Name = "LocalhostBackup"
    JobDefs = "DefaultJob"
    Enabled = yes
    Level = Full
    FileSet = "LocalhostFiles"
    Schedule = "LocalhostDaily"
    Storage = TapeDrive
    Write Bootstrap = "/var/lib/bacula/LocalhostBackup.bsr"
  }  
  The job will do a Full backup every day to the tape drive.
  Each tape used will need to have a Label. If the current tape does not have a label Bacula will send an email letting you know. To label a tape using the Console enter the following from a terminal:
  bconsole
  At the Bacula Console prompt enter:
  label
  You will then be prompted for the Storage resource:
  Automatically selected Catalog: MyCatalog
  Using Catalog "MyCatalog"
  The defined Storage resources are:
       1: File
       2: TapeDrive
  Select Storage resource (1-2):2
  Enter the new Volume name:
  Enter new Volume name: Sunday
  Defined Pools:
       1: Default
       2: Scratch
  Replace Sunday with the desired label.
  Now, select the Pool:
  Select the Pool (1-2): 1
  Connecting to Storage daemon TapeDrive at backupserver:9103 ...
  Sending label command for Volume "Sunday" Slot 0 ...

Congratulations, you have now configured Bacula to backup the localhost to an attached tape drive.

Ссылки

  For more Bacula configuration options refer to the Bacula User's Manual
  The Bacula Home Page contains the latest Bacula news and developments.
  Also, see the Bacula Ubuntu Wiki page.