Project

General

Profile

BackupPC » History » Version 14

Amministratore Truelite, 12/17/2010 05:23 PM

1 1 Amministratore Truelite
[[TracNav(TOC)]]
2 1 Amministratore Truelite
= Backup con BackupPC =
3 1 Amministratore Truelite
4 5 Amministratore Truelite
Il programma [http://backuppc.sourceforge.net/ BackupPC] è un sistema di
5 5 Amministratore Truelite
backup scritto in perl che presenta una buona flessibilità e potenza insieme
6 5 Amministratore Truelite
ad una discreta facilità d'uso sul lato utente grazie alla sua interfaccia
7 5 Amministratore Truelite
web. BackupPC è utile in tutti quei casi in cui sia necessario gestire backup
8 5 Amministratore Truelite
di realtà non troppo complesse per le quali sia sufficiente un salvataggio su
9 5 Amministratore Truelite
disco (esterno o rimuovibile).
10 1 Amministratore Truelite
11 5 Amministratore Truelite
Qualora si debbano realizzare strategie di backup più complesse, in
12 5 Amministratore Truelite
particolare con salvataggi su diversi supporti, conviene utilizzare un
13 5 Amministratore Truelite
prodotto molto più sofisticato (ma anche molto più complicato da usare) come
14 5 Amministratore Truelite
Bacula. In questo caso lo svantaggio principale è costituito dalla complessità
15 5 Amministratore Truelite
dell'interfaccia utente per il ripristino, che usa la linea di comando.
16 1 Amministratore Truelite
17 5 Amministratore Truelite
Un altro vantaggio di BackupPC è che non è necessario installare nessun
18 5 Amministratore Truelite
programma sui PC di cui si effettua il backup, in quanto tutto viene eseguito
19 5 Amministratore Truelite
tramite l'uso di {{{rsync}}} per le macchine unix e del protocollo SMB (o
20 5 Amministratore Truelite
CIFS) per le macchine windows.
21 2 Amministratore Truelite
22 10 Amministratore Truelite
All'interno di ''Debian Lenny'' è già disponibile la versione 3.1.0 di
23 5 Amministratore Truelite
BackupPC, che può essere installata semplicemente con il comando:
24 1 Amministratore Truelite
{{{
25 1 Amministratore Truelite
apt-get install backuppc
26 1 Amministratore Truelite
}}}
27 5 Amministratore Truelite
28 5 Amministratore Truelite
Per poter utilizzare il supporto dei backup su unix via {{{rsync}}} oltre a
29 6 Amministratore Truelite
quest'ultimo è comunque necessario installarsi anche i rispettivi pacchetti Perl, 
30 6 Amministratore Truelite
senza i quali il sistema non funziona;  inoltre possono risultare utili altri 
31 6 Amministratore Truelite
pacchetti, in particolare programmi
32 5 Amministratore Truelite
per la decompressione/compressione degli archivi e per l'accesso agli share
33 6 Amministratore Truelite
Windows tramite il protocollo SMB; per cui alla fine sarà opportuno installare anche:
34 5 Amministratore Truelite
35 1 Amministratore Truelite
{{{
36 8 Amministratore Truelite
apt-get install libfile-rsync-perl libfile-rsyncp-perl rsync \
37 8 Amministratore Truelite
                par2 bzip2 smbfs
38 5 Amministratore Truelite
}}}
39 5 Amministratore Truelite
40 5 Amministratore Truelite
All'installazione del pacchetto l'interfaccia web viene configurata per
41 5 Amministratore Truelite
l'accesso autenticato generando i due file {{{htgroup}}} e {{{htpasswd}}}
42 5 Amministratore Truelite
dentro {{{/etc/backuppc/}}} che vengono referenziati direttamente dalla
43 5 Amministratore Truelite
relativa configurazione di Apache. Questa è contenuta nel file
44 7 Amministratore Truelite
{{{apache.conf}}} della stessa directory, a deve essere creato un link simbolico
45 5 Amministratore Truelite
in {{{/etc/apache2/conf.d/}}}. 
46 5 Amministratore Truelite
47 5 Amministratore Truelite
Se si dispone di un sistema di gestione centralizzata degli utenti su LDAP
48 5 Amministratore Truelite
questo può essere utilizzato usando la seguente configurazione (per i dettagli
49 5 Amministratore Truelite
sulle direttive si veda [wiki:Apache2.2DavLdap]):
50 5 Amministratore Truelite
{{{
51 5 Amministratore Truelite
Alias /backuppc /usr/share/backuppc/cgi-bin/
52 5 Amministratore Truelite
<Directory /usr/share/backuppc/cgi-bin/>
53 5 Amministratore Truelite
        AllowOverride None
54 5 Amministratore Truelite
        Options ExecCGI FollowSymlinks
55 5 Amministratore Truelite
        AddHandler cgi-script .cgi
56 5 Amministratore Truelite
        DirectoryIndex index.cgi
57 5 Amministratore Truelite
        AuthType basic
58 5 Amministratore Truelite
        AuthName "BackupPC admin"
59 5 Amministratore Truelite
        AuthBasicProvider ldap
60 5 Amministratore Truelite
        AuthzLDAPAuthoritative off
61 5 Amministratore Truelite
        AuthLDAPURL ldap://127.0.0.1/ou=People,dc=truelite,dc=it
62 5 Amministratore Truelite
        require valid-user
63 5 Amministratore Truelite
</Directory>
64 1 Amministratore Truelite
}}}
65 8 Amministratore Truelite
66 8 Amministratore Truelite
Il programma mantiene i dati del backup in {{{/var/lib/backuppc}}}, questo significa
67 8 Amministratore Truelite
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.
68 8 Amministratore Truelite
69 12 Amministratore Truelite
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. 
70 11 Amministratore Truelite
71 11 Amministratore Truelite
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}}} per il backup locale delle configurazioni.
72 11 Amministratore Truelite
73 12 Amministratore Truelite
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:
74 1 Amministratore Truelite
{{{
75 12 Amministratore Truelite
$Conf{FullKeepCnt} = [4, 0, 12];
76 12 Amministratore Truelite
}}}
77 12 Amministratore Truelite
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).
78 12 Amministratore Truelite
79 12 Amministratore Truelite
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:
80 12 Amministratore Truelite
{{{
81 11 Amministratore Truelite
...
82 1 Amministratore Truelite
host        dhcp    user    moreUsers     # <--- do not edit this line
83 12 Amministratore Truelite
84 1 Amministratore Truelite
localhost   0       backuppc
85 12 Amministratore Truelite
client	    0       backuppc
86 1 Amministratore Truelite
}}}
87 1 Amministratore Truelite
88 12 Amministratore Truelite
Utilizzando per {{{hosts}}} l'esempio precedente le configurazioni specifiche per la macchina phi 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.
89 12 Amministratore Truelite
90 12 Amministratore Truelite
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 sarà qualcosa del tipo:
91 1 Amministratore Truelite
{{{
92 12 Amministratore Truelite
$Conf{XferMethod} = 'tar';
93 12 Amministratore Truelite
$Conf{TarShareName} = [ '/etc', '/var', '/home', '/root' ];
94 12 Amministratore Truelite
$Conf{BackupFilesExclude} = [ '/var/cache', '/var/run' ];
95 12 Amministratore Truelite
}}}
96 12 Amministratore Truelite
97 13 Amministratore Truelite
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:
98 12 Amministratore Truelite
{{{
99 10 Amministratore Truelite
su - backuppc
100 10 Amministratore Truelite
ssh-keygen -t dsa
101 10 Amministratore Truelite
}}}
102 13 Amministratore Truelite
avendo cura di mettere una password vuota per la chiave. Per poter effettuare il collegamento si dovrà poi copiare sulle macchine di cui si vuole fare il backup la suddetta chiave nel file {{{.ssh/authorized_keys}}} nella home dell'utente remoto.
103 1 Amministratore Truelite
104 13 Amministratore Truelite
Per migliorare la sicurezza è preferibile evitare l'uso di root come utente sulla macchina di cui si vuole effettuare il backup, quello che serve infatti è soltanto poter eseguire il comando di backup con privilegi di amministratore, per questo la procedura più corretta, per evitare che una compromissione del server di backup dia accesso completo anche alla macchina di cui si fanno i backup, è creare su questa un utente da usare per i backup e ricorrere a {{{sudo}}} per consentire a questo l'esecuzione del comando necessario. 
105 1 Amministratore Truelite
106 13 Amministratore Truelite
Se allora si è preventivamente creato anche sulla macchina di cui eseguire il backup un utente {{{backuppc}}}, per poterlo utilizzare si dovrà anzitutto copiare nella sua home la chiave pubblica precedentemente creata, e poi configurare {{{sudo}}}, così se si vuole utilizzare il metodo {{{tar}}} occorrerà aggiungere a {{{/etc/sudoers}}} una riga:
107 13 Amministratore Truelite
{{{
108 13 Amministratore Truelite
backuppc  ALL=NOPASSWD: /bin/tar -c *
109 13 Amministratore Truelite
}}}
110 13 Amministratore Truelite
111 13 Amministratore Truelite
Occorrerà poi modificare la variabile {{{TarClientCmd}}} nella configurazione di BackupPC aggiungendo a  {{{client.pl}}} qualcosa del tipo:
112 13 Amministratore Truelite
{{{
113 13 Amministratore Truelite
$Conf{TarClientCmd} = '$sshPath -q -x -n -l backuppc $host'
114 13 Amministratore Truelite
                      . ' env LC_ALL=C /usr/bin/sudo $tarPath -c -v -f - -C $shareName+'
115 13 Amministratore Truelite
                      . ' --totals';
116 13 Amministratore Truelite
}}}
117 13 Amministratore Truelite
e ci si ricordi eseguire almeno una volta la prova di funzionamento del comando con qualcosa del tipo:
118 13 Amministratore Truelite
{{{
119 13 Amministratore Truelite
su backuppc
120 14 Amministratore Truelite
/usr/bin/ssh -q -x -n -l backuppc client env LC_ALL=C /usr/bin/sudo /bin/tar -c -v -f - -C /etc  .
121 13 Amministratore Truelite
}}}
122 13 Amministratore Truelite
che almeno la prima volta comporterà l'accettazione della chiave del server SSH della macchina remota, che dovrà essere eseguita manualmente una volta per tutte per generare la voce in {{{.ssh/known_hosts}}} onde evitare il fallimento dei backup.