[precedente] L&L - Copertina - Linux Zip Install [successivo]

Articolo


I backup

Vi è mai successo di lavorare giorno e notte per una settimana, e mentre state inviando il tanto sudato lavoro al vostro capo di cancellarlo per errore? O di vedere perdere mesi di lavoro per un blackout, o un fulmine che entra dalla linea del modem, o l'hard disk che si stufa improvvisamente di funzionare? No? Beh, siete stati veramente fortunati, sono cose che, purtroppo, accadono più spesso di quanto si pensi. Come insegna l'illustre Dott. Murphy, la sfortuna più nera è sempre dietro l'angolo... l'unico modo per evitare danni irreparabili, almeno per quanto riguarda il vostro computer, è fare backup. Siate sempre pronti alle calamità più terribili, e potrete salvarvi dalle disattenzioni di tutti i giorni :-)

Di cosa fare backup

La prima cosa da scegliere in una politica di backup è quali files salvare. Genericamente, i backup si possono dividere in due parti, il backup di sistema e il backup dei dati utente; con un sistema operativo come Linux questa divisione è molto netta, grazie alla struttura del filesystem unix-like, in cui tutti i dati degli utenti vengono tenuti nella directory /home, e il sistema operativo e le applicazioni sono nel resto del disco. Lo scopo dei backup di sistema è quello di minimizzare lo sforzo di reinstallare tutto dopo un crash, il che è piuttosto importante soprattutto se avete fatto delle modifiche custom alle configurazioni; il backup dei dati utente è invece di solito indispensabile, dato che normalmente quello che avete nella /home è frutto di mesi e mesi di lavoro.

Tipicamente, quindi, sarà necessario fare piuttosto spesso il backup dei vostri dati, che cambiano con maggiore velocità, mentre il backup del sistema è un'operazione che può essere fatta con frequenza molto minore. In realtà il backup del sistema può anche essere evitato, se avete problemi di spazio; basta fare le copie dei files critici che avete modificato rispetto alle configurazioni di default. Tenete presente che quello che va salvato dipende dal vostro sistema, ma sicuramente dovrete fare una copia di:


/etc/printcap 		la configurazione delle stampanti
/etc/X11/XF86Setup	la configurazione di X 
/etc/passwd e/o 
/etc/shadow		l'elenco degli utenti con le rispettive password
/etc/fstab		i filesystem che avete, con le directory in cui
			questi vengono montati
Normalmente, come potete vedere, i files da salvare sono quelli della diretory /etc, che infatti è quella che contiene i files di configurazione. Un'altra cosa che vi conviene salvare è l'elenco dei pacchetti installati, in modo da poter ripetere l'installazione. Attenzione però, perché se installate una versione più recente del sistema, i vecchi files di configurazione potrebbero non essere compatibili con le nuove versioni dei programmi.

La velocità con cui variano i dati sul vostro sistema influisce sulla frequenza con cui fare le copie di backup. I backup di sistema possono essere piuttosto rari, dato che normalmente in un sistema in produzione le modifiche non sono molto frequenti; se fate un backup dell'intero sistema, però, e poi apportate delle modifiche, appuntatele, in modo da poterle ricostruire in caso di perdita dei dati. I backup utente, invece, devono essere fatti ad intervalli più ravvicinati. Anche in questo caso la frequenza va definita a seconda delle necessità: per il computer di casa può bastare anche una volta al mese, per un sistema che contenga dati critici a volte è necessario anche un backup al giorno.

Il mezzo di backup

A seconda delle vostre necessità, della mole di dati da gestire, della frequenza dei backup e della criticità dei dati, la scelta del mezzo di backup può ricadere su supporti molto diversi tra di loro.

Per ciascuna delle possibilità vanno considerate le seguenti caratteristiche:

Se dovete salvare solo quantità molto piccole di dati, potete pensare di utilizzare i floppy; la possibilità sussiste anche se avete file grandi, dato che esistono programmi in grado di suddividere un singolo file in più dischi... l'unico inconveniente è che dovete essere lì ad inserirli uno per volta. Per il vostro sistema di casa può essere una soluzione fattibile, ma la maggior parte delle volte non lo è, anche considerando il fatto che i floppy hanno una probabilità non trascurabile di essere difettosi, o di rovinarsi con il tempo se non conservati in maniera corretta, rischiando quindi di farvi comunque perdere i dati.

La soluzione più comune è quella di utilizzare un'unità a nastro, che permette di avere supporti di backup di dimensioni notevoli, a prezzo relativamente basso. Linux supporta una vasta gamma di unità a nastro, sia collegabili all'unità floppy sia SCSI; se poi siete collegati in rete con una macchina che ha un'unità a nastro potete utilizzare quella. Vedremo poi come gestire i backup di rete.

Per quantità di dati non molto alte, potete pensare di utilizzare dei dischi ZIP, il cui lettore è disponibile sia in versione SCSI che parallela. Rispetto ad un'unità nastro hanno il vantaggio di essere accessibili in modo casuale, e non solo sequenzialmente come per i nastri, il che si riflette in una maggiore velocità di accesso.

Per chi deve salvare quantità medie di dati che vengono modificati poco spesso, una soluzione da considerare è quella di utilizzare dei CD-ROM. Il vantaggio di questo tipo di supporti è l'altissima durabilità ed il prezzo relativamente basso, il che viene compensato dal fatto che non possono essere utilizzati un numero indefinito di volte.

Chi invece ha bisogno di backup molto ravvicinati nel tempo può pensare di unire ad uno strumento di backup usuale come un nastro, da utilizzare ad intervalli più lontani, la copia su un altro hard disk, anche in rete. Anche se questo non può essere un metodo di backup da usare da solo, può risultare comodo nelle occasioni in cui gli utenti devono poter ad esempio avere un accesso veloce ai file del giorno prima, in caso ne avessero cancellato uno per errore.

Backup completi ed incrementali

Se avete pochi dati da salvare, e non lo dovete fare molto spesso, potete permettervi di copiare ogni volta tutto quanto sul supporto di backup. Anche in questo modo, però, dovete avere almeno due supporti, da utilizzare alternativamente; pensate infatti cosa succederebbe se il vostro computer dovesse decidere di morire mentre sta scrivendo il backup... perdereste i dati nel disco e contemporaneamente quelli sul nastro, rimanendo con un palmo di naso!
Per chi ha una quantità maggiore di dati da gestire è preferibile ricorrere ad una policy composita, sfruttando anche la possibilità di avere backup incrementali, con cui vengono salvati solo i files che sono stati modificati rispetto alla precedente operazione di backup. In questo modo io posso, ad esempio, fare un backup completo ogni settimana ed uno incrementale al giorno; in caso di crash va dunque fatto il restore prima del backup completo e poi dei singoli backup incrementali a partire dal primo fino all'ultimo. Questo modo di agire ha il vantaggio di velocizzare moltissimo l'operazione di backup, ma lo svantaggio sia di rendere più macchinoso il restore, sia di avere bisogno di un numero di supporti di backup molto maggiore.

Lo strumento di backup

Gli strumenti disponibili per i backup su Linux sono molteplici, e in grado di soddisfare le necessità della maggior parte degli utenti. Gli strumenti più tradizionali sono tar, cpio e dump; oltre a questi ne esistono molti altri, sia liberi che commerciali, che permettono sia il backup di macchine singole che via rete. Ovviamente la scelta dello strumento di backup influisce su quella del mezzo e viceversa.

Tar e cpio sono in realtà due archiviatori, non strumenti scritti specificamente per fare i backup; a differenza di dump, utilizzano il filesystem per leggere i dati, il che li rende più lenti, ma utilizzabili su qualsiasi tipo di filesystem, mentre il dump di Linux può leggere solo filesystem di tipo ext2. Dump, però, ha molte caratteristiche che tar e cpio non hanno e che quindi devono essere implementate attraverso script, come la possibilità di fare backup multilivello, in cui si salvano solo i files modificati rispetto a backup incrementali di livello superiore.

Quando scelgo lo strumento di backup devo considerare anche la possibilità che detto backup sia compresso prima di inviarlo al nastro; il vantaggio ovvio è quello di occupare meno spazio, ma va considerata anche la possibilità che il supporto di registrazione si rovini, il che implicherebbe la perdita di tutti i dati nel caso di backup compresso, e di solo una parte di essi nel caso di backup non compresso. Valutate quindi l'affidabilità ed il costo del supporto da voi scelto ed agite di conseguenza.

tar

Il modo più semplice di usare tar per un backup è di redirigere il suo output direttamente sul device corrispondente al supporto di backup:

tar -cvf /dev/st0 /home/pippo
In questo modo l'opzione c dice a tar di creare l'archivio, /dev/st0 è il dispositivo corrispondente al tape streamer scsi, e /home/pippo è la directory copiata. Al contrario del tar degli altri unix, il tar gnu sostituisce allo / iniziale ./ , in modo da permettere di scompattare l'archivio in una sottodirectory, senza compromettere il sistema.

La versione gnu di tar, diversamente da quelle degli altri unix, inoltre, gestisce bene i file speciali, come i link, e mantiene, se utilizzato da utente root, le ownership di utenti e gruppi.

Se il backup non entra in un supporto singolo, va usata l'opzione -multi-volume, o -M:


tar -cMf /dev/fd0u1440 /home/pippo
Quando il primo dischetto sarà pieno, vi chiederà il secondo. Attenzione, i dischetti risultanti (così come i nastri) non contengono un filesystem, ma soltanto dei dati "grezzi". Se provate a montarli, quindi, non potrete leggere niente; nello stesso modo, quando fate le operazioni di backup, non utilizzate dischetti montati, né che abbiano al loro interno dei dati preesistenti, che verrebbero cancellati.

Da notare l'opzione v, usata nel primo esempio, che vi stampa a video il file che sta copiando, in modo da farvi rendere conto di cosa stia facendo il programma.

Per estrarre i file dall'archivio, usate l'opzione -x:


tar -xvf /dev/fd0u1440
Per controllare quale file ci sono nell'archivio, è utile l'opzione -t:

tar -tf /dev/fd0u1440
Per quanto riguarda la possibilità di utilizzare backup compressi, il tar della GNU permette, diversamente dalle versioni degli altri Unix, di utilizzare delle opzioni per la compressione automatica dei dati; in particolare l'opzione -z crea un .tar.gz, compresso con gzip, mentre l'opzione -I, presente solo nelle versioni più recenti, utilizza bzip2, permettendo quindi una compressione molto migliore.

cpio

Cpio opera in maniera molto simile a tar, generando archivi e copiando file in essi e da essi, con il supporto anche per gli stessi archivi generati da tar. Ha tre modalità di utilizzo:
  1. copy-out mode copia i file in un archivio
  2. copy-in mode copia i file da un archivio nel disco
  3. copy-pass mode copia i file da un albero di directory in un altro.
I vantaggi della versione GNU di cpio rispetto alle altre versioni di cpio sono: Il modo più comune di utilizzare cpio in copy-out mode è di mandargli in input un elenco di files e directory selezionati con find. In questo modo possiamo inserire nell'archivio ad esempio solo i files creati dopo una determinata data, o eliminarne quelli con estensioni specifiche, e così via. Per minimizzare gli eventuali problemi con i permessi su directory non scrivibili o non leggibili va data a find l'opzione -depth, che processa il contenuto di una directory prima della directory stessa.

La modalità copy-in viene utilizzata invece per estrarre dati da un archivio. E' possibile indicare dei criteri per l'estrazione di una parte soltanto dei file, come anche dopotutto succede per tar.

La modalità copy-pass non serve per utilizzare degli archivi, ma per copiare dei file da una directory ad un'altra, combinando i passi di copy-out e copy-in. E' questa che viene usata in genere per i backup.

Ad esempio, per copiare un albero di directory da un dispositivo ad un altro:


find . -print0 | cpio -p0umd /mnt/tmp
In questo modo si dà in input a cpio, usando il comando find, l'elenco di tutti i file e sottodirectory della directory corrente; cpio poi viene usato in modalità copy-pass (opzione -p), si aspetta che le linee di input siano terminate da un carattere di null (opzione -0), preserva i tempi di modifica dei file (opzione -m) e lascia le directory nel percorso come necessario (opzione -d). L'opzione -u sostituisce tutti i file senza chiedere conferma per la sostituzione.

Un altro esempio dell'uso della modalità copy-pass di cpio ci serve se vogliamo fare dei backup incrementali giornalieri: la prima volta usiamo


find . -print | cpio -pmdv /floppy
e le volte successive

find . -mtime -1 -print | cpio -pmdv /floppy
L'opzione -mtime -1 di find specifica che nell'archivio vanno inseriti solo i file che sono stati modificati o creati da meno di un giorno.

dump

Dump ed il suo compagno restore permettono di fare backup completi ed incrementali di filesystem. I backup incrementali vengono fatti basandosi sui cosiddetti ``livelli di dump'', per cui in ciascun livello viene fatto il backup dei file modificati dopo l'ultimo backup di livello inferiore. I backup completi, quindi, possono essere considerati di livello zero.

Per il recupero dei file, al contrario di tar e cpio, dump ha bisogno di un altro programma, restore, che può recuperare interi filesystem o singoli file o directory. Restore ha anche una modalità interattiva, che permette di scorrere i file contenuti in una directory di cui sia stato fatto il backup per selezionare quelli da estrarre.

Ad esempio, per creare un backup full (di livello zero) si può usare un comando di questo tipo:


/sbin/dump -0u -f /dev/nrst1 /home
che poi si recupera con

restore rf /dev/nrst1
L'opzione u di dump scrive nel file /var/lib/dumpdates indicando una data per ciascun filesystem di cui si è fatto backup, in modo che le successive operazioni possano essere fatte automaticamente.

Una volta che abbiamo il backup di ordine zero, possiamo passare a backup superiori, che copino solo le modifiche fatte dalla data dell'ultima copia; ad esempio:


dump -1u -f /dev/nrst1 /home
In questo modo si ha bisogno dell'intervento dell'operatore solo in caso di errori, o se si deve cambiare il nastro.

Dump, al contrario di tar, legge il filesystem in modalità raw, senza passare per la struttura ext2. Come risultato, se si usa dump non è necessario assicurarsi che l'utente che sta operando il backup abbia accesso a tutti i file che sta copiando; va però considerato anche il fatto che, proprio per questa sua proprietà, dump è estremamente dipendente dal tipo di formattazione del disco: può essere estremamente complesso recuperare un filesystem di cui si è fatto backup con dump su una macchina di architettura e sistema operativo diverso. Tar non ha questo problema, perché legge la struttura dei file dal filesystem.

Backup di rete

In una rete di computer, di solito, non è presente un'unità nastro per ciascuna macchina, ma ce ne è una sola, su cui fare il backup di tutti i filesystem distribuiti. Sia tar che cpio che dump hanno la possibilità di indicare con l'opzione -f, invece di un file locale, un file su una macchina remota con la sintassi utente@host:file. Per la copia dei file attraverso la rete viene utilizzato il comando rmt, che rende possibile l'operazione da qualsiasi macchina Linux o unix. Se nella rete sono presenti anche macchine Windows, o la quantità di dati da gestire è troppo grande per una soluzione del genere, si può usare un programma di backup parallelo come Amanda (http://www.cs.umd.edu/projects/amanda/), che sfrutta un sofisticato sistema di caching per massimizzare la velocità di trasferimento sulla rete, e di copia sul nastro. Amanda permette anche di fare copie di backup di unità condivise di Windows utilizzando Samba.

Documentazione e riferimenti


[precedente] L&L - Copertina - Linux Zip Install [successivo]