## Bacula

Bacula è un programma di backup che consente di eseguire backup, ripristinarli e verificare i dati attraverso la rete. Sono disponibili client per Linux, Windows e Mac OSX, rendendolo una soluzione di rete multi-piattaforma.

### Panoramica

Bacula è composto da diversi componenti e servizi usati per la gestione dei file di cui eseguire il backup e dove eseguirlo:

- Bacula Director: un servizio che controlla tutte le operazioni di backup, ripristino, verifica e di archiviazione.

- Bacula Console: un'applicazione che consente di comunicare con "Director". Sono disponibili tre versioni:

  - Versione testuale per la riga di comando.

  - Versione grafica per GNOME basata su GTK+.

  - Interfaccia wxWidgets.

- Bacula File: conosciuta anche come Bacula Client. Questa applicazione è installata nei computer di cui deve essere fatto il backup ed è responsabile dei dati richiesti dal Director.

- Bacula Storage: il programma che esegue l'archiviazione e il ripristino sul dispositivo fisico.

- Bacula Catalog: responsabile per mantenere l'indice dei file e il database di tutti i file, consentendo una facile localizzazione e ripristino. "Catalog" supporta tre diversi database: MySQL, PostgreSQL e SQLite.

- Bacula Monitor: consente di monitorare i demoni "Director", "File" e "Storage". Attualmente "Monitor" è disponibile solo come applicazione GTK+.

Questi servizi e applicazioni possono essere eseguiti su molteplici server e client oppure possono essere installati su un solo computer se deve essere eseguito il backup di un singolo disco o volume.

### Installazione

Ci sono molteplici pacchetti che contengono i diversi componenti di Bacula. Per installare Bacula, in un terminale, digitare:

    sudo apt-get install bacula

In modo predefinito, installando il pacchetto bacula viene usato un database MySQL per "Catalog". Se si vuole usare SQLite oppure PostgreSQL, installare bacula-director-sqlite3 o bacula-director-pgsql rispettivamente.

Durante il processo di installazione viene chiesto di fornire delle credenziali per l'amministratore del database e per il proprietario del database bacula. L'amministratore del database deve avere i diritti apporpriati per poter creare un database. Per maggiori informazioni, consultare la la sezione chiamata «MySQL».

### Configurazione

I file di configurazione di Bacula sono formattati in base alle risorse composte da direttive marcate da parantesi «{}». Ogni compoenente di Bacula dispone di un file nella directory `/etc/bacula`.

I diversi componenti di Bacula devono autorizzarsi tra di loro. Questo è fatto usando la direttiva password. Per esempio, la risorsa password di Storage nel file `/etc/bacula/bacula-dir.conf` deve corrispondere alla risorsa password di Director nel file `/etc/bacula/bacula-sd.conf`.

In modo predefinito, il lavoro di backup chiamato Client1 è confoigurato per archiviare il "Catalog" di Bacula. Se si intende usare il server per eseguire il backup di più di un client, è necessario modificare il nome del lavoro con qualche cosa di più descrittivo. Per fare questo, modificare il file `/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"
    }

L'esempio precedente modifica il nome del lavoro in BackupServer, in corrispondenza del nome host del computer. Sostituire «BackupServer» con il nome host appropriato o un altro nome descrittivo.

Console può essere usato per interrogare Director riguardo i lavori, ma per poter usare "Console" con un utente non-root, l'utente deve essere nel gruppo bacula. Per aggiungere un utente al gruppo "bacula", in un terminale, digitare:

    sudo adduser NOME_UTENTE bacula

Sostituire NOME_UTENTE con il vero nome utente. Inoltre, se si sta aggiungendo l'utente corrente al gruppo, è necessario terminare la sessione e rientrarvi affinché le modifiche abbiano effetto.

### Backup locale

Questa sezione descrive come eseguire un backup di specifiche directory di un singolo host in un dispositivo a nastro locale.

- Per prima cosa, Storage deve essere configurato. Modificare `/etc/bacula/bacula-sd.conf`:

      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'"
      }

  L'esempio è per un dispositivo a nastro DDS-4. Modificare "Media Type" e "Archive Device" affinché corrispondano al proprio hardware.

  È possibile anche de-commentare uno degli altri file di esempio.

- Dopo aver apportato una modifica al file `/etc/bacula/bacula-sd.conf`, il demone Storage deve essere riavviato:

      sudo /etc/init.d/bacula-sd restart

- Ora aggiungere una risorsa Storage in `/etc/bacula/bacula-dir.conf` per usare il nuovo "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 = "Cv70F6pf1t6pBopT4vQOnigDrR0v3LT3Cgkiyj"
        Device = "Tape Drive"
        Media Type = tape
      }

  La direttiva Address deve essere il "Fully Qualified Domain Name" (FQDN) del server. Modificare quindi backupserver col nome host attuale.

  Inoltre, assicurarsi che la direttiva Password corrisponda alla stringa in `/etc/bacula/bacula-sd.conf`.

- Creare un nuovo FileSet, per determinare di quali directory eseguire il backup:

      # LocalhostBacup FileSet.
      FileSet {
        Name = "LocalhostFiles"
        Include {
          Options {
            signature = MD5
            compression=GZIP
          }
          File = /etc
          File = /home
        }
      }

  Questa sezione FileSet farà in modo di eseguire il backup della directory `/etc` e `/home`. La direttiva Options configura "FileSet" per creare una somma MD5 per ogni file di cui è fatto il backup e per comprimere tali file con GZIP.

- Creare una nuova sezione Schedule per il lavoro di backup:

      # LocalhostBackup Schedule -- Daily.
      Schedule {
        Name = "LocalhostDaily"
        Run = Full daily at 00:01
      }

  Il lavoro verrà eseguito ogni giorno alle 00.01. Sono comunque disponibili molte altre opzioni di schedulatura.

- Infine creare il 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"
      }

  Questo lavoro crearà un backup Full (completo) ogni giorni sul dispositivo a nastro.

- Ogni nastro usato deve avere una Label. Se il nastro corrente ne è sprovvisto, Bacula invierà un'email. Per aggiungere un'etichetta a un nastro usando Console, in un terminale, digitare:

      bconsole

- Al prompt di "Console" digitare:

      label

- Viene quindi chiesta la risorsa Storage:

      Automatically selected Catalog: MyCatalog
      Using Catalog "MyCatalog"
      The defined Storage resources are:
           1: File
           2: TapeDrive
      Select Storage resource (1-2):2

- Inserire il nome del nuovo Volume (volume):

      Enter new Volume name: Sunday
      Defined Pools:
           1: Default
           2: Scratch

  Sostituire Sunday con l'etichetta desiderata.

- Ora selezionare Pool:

      Select the Pool (1-2): 1
      Connecting to Storage daemon TapeDrive at backupserver:9103 ...
      Sending label command for Volume "Sunday" Slot 0 ...

Bacula è ora configurato per eseguire backup del host locale su un dispositivo a nastro.

### Risorse

- Per maggiori informazioni sulle opzioni di configurazione di Bacula, consultare il manuale di Bacula

- Il sito di Bacula contiene le ultime notizie dello sviluppo di Bacula.

Rotazione degli archivi |  | Capitolo 17. Virtualizzazione