Project

General

Profile

BackupPC » History » Version 17

« Previous - Version 17/24 (diff) - Next » - Current version
Simone Piccardi, 12/22/2010 01:58 PM


Backup con BackupPC

Il programma BackupPC è un sistema di backup scritto in Perl che presenta una buona flessibilità e potenza insieme ad una discreta facilità d'uso sul lato utente grazie alla sua interfaccia web. BackupPC è utile in tutti quei casi in cui sia necessario gestire backup di realtà non troppo complesse per le quali sia sufficiente un salvataggio su disco (esterno o rimuovibile).

Qualora si debbano realizzare strategie di backup più complesse, in particolare con salvataggi su diversi supporti, conviene utilizzare un prodotto molto più sofisticato (ma anche molto più complicato da usare) come Bacula. In questo caso lo svantaggio principale è costituito dalla complessità dell'interfaccia utente per il ripristino, che usa la linea di comando.

Un altro vantaggio di BackupPC è che non è necessario installare nessun programma sui PC di cui si effettua il backup, in quanto tutto viene eseguito tramite l'uso di rsync o tar (via SSH) per le macchine unix e del protocollo SMB (o CIFS) per le macchine windows.

All'interno di Debian Lenny è già disponibile la versione 3.1.0 di BackupPC, che può essere installata semplicemente con il comando:

apt-get install backuppc

Per poter utilizzare il supporto dei backup su unix via rsync oltre a quest'ultimo è comunque necessario installarsi anche i rispettivi pacchetti Perl, senza i quali il sistema non funziona; inoltre possono risultare utili altri pacchetti, in particolare programmi per la decompressione/compressione degli archivi e per l'accesso agli share Windows tramite il protocollo SMB; per cui alla fine sarà opportuno installare anche:

apt-get install libfile-rsync-perl libfile-rsyncp-perl rsync \
                par2 bzip2 smbfs

All'installazione del pacchetto l'interfaccia web viene configurata per l'accesso autenticato generando i due file htgroup e htpasswd dentro /etc/backuppc/ che vengono referenziati direttamente dalla relativa configurazione di Apache. Questa è contenuta nel file apache.conf della stessa directory, a cui deve essere creato un link simbolico in /etc/apache2/conf.d/.

Se si dispone di un sistema di gestione centralizzata degli utenti su LDAP questo può essere utilizzato usando la seguente configurazione (per i dettagli sulle direttive si veda Apache22DavLdap):

Alias /backuppc /usr/share/backuppc/cgi-bin/
<Directory /usr/share/backuppc/cgi-bin/>
        AllowOverride None
        Options ExecCGI FollowSymlinks
        AddHandler cgi-script .cgi
        DirectoryIndex index.cgi
        AuthType basic
        AuthName "BackupPC admin" 
        AuthBasicProvider ldap
        AuthzLDAPAuthoritative off
        AuthLDAPURL ldap://127.0.0.1/ou=People,dc=truelite,dc=it
        require valid-user
</Directory>

Il programma mantiene i dati del backup in /var/lib/backuppc, questo significa che si deve avere spazio sufficiente sul filesystem di /var per i backup. Se si desidera allocare lo spazio su una partizione separata si deve spostare la directory sunnominata nella destinazione voluta, lasciando al suo posto un link simbolico.

Il passo successivo è la configurazione del programma, questa è mantenuta, insieme a tutti gli altri file, in /etc/backuppc, il file principale è config.pl, che contiene la definizione di una serie di variabili Perl, con le quali viene controllato il comportamento del programma. Il file è ben commentato, e le variabili sono numerosissime, per cui ci concentreremo solo sul sottoinsieme di quelle utilizzate nei vari file di configurazione relativi alle singole macchine.

Il file config.pl contiene infatti i valori di default, usati in maniera generica quando non ve ne sono indicati di specifici, il sistema infatti richiede che si indichi nel file hosts l'elenco delle macchine di cui si vuole effettuale il backup (in genere usando il relativo hostname) e poi si inseriscano le chiavi di configurazione specifiche da applicare per ciascuna di esse in un corrispondente file hostname.pl. Il pacchetto Debian ad esempio inserisce un localhost.pl per il backup locale delle configurazioni.

Per quanto riguarda config.pl la direttiva probabilmente più significativa è FullKeepCnt che indica quanti backup completi mantenere. Il default è uno, che indica uno solo per settimana ma si può richiedere un periodo più lungo specificando un array di valori, questo ha un significato complicato in cui ogni numero successivo al primo indica il numero di backup completi da mantenere per il successivo multiplo di due settimane, ad esempio indicando:

$Conf{FullKeepCnt} = [4, 0, 12];

si richiedono quattro copie dei backup completi a cadenza settimanale, nessuna copia per i backup completi a cadenza bisettimanale e 12 copie dei backup completi a cadenza circa mensile (ad esser precisi quadrisettimanale).

Il file hosts ha un formato diviso in quattro colonne, la prima colonna indica il nome della macchina, questo deve poter essere risolto direttamente (si fa riferimento o ad un hostname nel proprio dominio, o a un nome di una macchina Windows risolvibile via netbios). La seconda colonna indica se deve essere fatta o meno una ricerca netbios sul range fornito dal DHCP, ed in genere deve restare impostata a zero. Il terzo campo indica l'utente (locale) per conto del quale viene eseguito il backup (usato pure per l'accesso all'interfaccia web). Se ne possono specificare altri, sempre per username, in un elenco separato da virgole nella quarta ed ultima colonna. Un esempio di questo file potrebbe essere il seguente:

...
host        dhcp    user    moreUsers     # <--- do not edit this line
...
localhost   0       backuppc
client        0       backuppc

Utilizzando per hosts l'esempio precedente le configurazioni specifiche per la macchina client dovranno essere inserite nel file client.pl. Come accennato, si tratterà di modificare solo le configurazioni attinenti alla tipologia di backup da eseguire, in questo caso la prima variabile utilizzata è XferMethod, che indica come eseguire il backup e può assumere quattro valori; quelli più usati sono comunque rsync per il backup attraverso rsync e tar per il backup attraverso l'omonimo comando. Il primo è più efficiente per i trasferimenti via rete, ma quando si deve eseguire un backup di moltissimi file, comporta un grande consumo di memoria per cui spesso si rivela troppo lento e problematico per la macchina ospite.

Dopo aver indicato il metodo da usare occorre indicare di quali directory si vuole eseguire il backup, in tal caso le variabili di controllo sono due, TarShareName se si usa il metodo tar e RsyncShareName se si usa rsync, entrambe prendono come valore un array di pathnames. Se allora si intende usare il comando tar il file di configurazione del nostro client.pl sarà qualcosa del tipo:

$Conf{XferMethod} = 'tar';
$Conf{TarShareName} = [ '/etc', '/var', '/home', '/root' ];
$Conf{BackupFilesExclude} = [ '/var/cache', '/var/run' ];

Sia che si usi il metodo rsync sia che si usi il metodo tar comunque si deve passare attraverso SSH, per questo sarà necessario installare una chiave per l'accesso alle macchine remote di cui si vuole fare il backup, questo richiede che si generi sul server una coppia di chiavi per l'utente backuppc (o per l'utente col quale si vuole effettuare il backup come indicato in hosts) per farlo si potranno usare i comandi:

su - backuppc
ssh-keygen -t dsa

<pre>

<pre>

<pre>
backuppc  ALL=NOPASSWD: /bin/tar -c *
</pre>

<pre>

<pre>
$Conf{TarClientCmd} = '$sshPath -q -x -n -l backuppc $host'
                      . ' env LC_ALL=C /usr/bin/sudo $tarPath -c -v -f - -C $shareName+'
                      . ' --totals';
</pre>

e ci si ricordi eseguire almeno una volta la prova di funzionamento del comando con qualcosa del tipo:

<pre>
su backuppc
/usr/bin/ssh -q -x -n -l backuppc client env LC_ALL=C /usr/bin/sudo /bin/tar -c -v -f - -C /etc  .
</pre>

<pre>

rrsync - Script rrsync con patch per BackupPC (6.79 KB) Simone Piccardi, 07/28/2016 03:46 PM