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.
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.
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».
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. |
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.
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.