Backup semplici

Un metodo di backup semplice è fare una copia di tutto una volta e poi copiare solo quei file che sono stati modificati dal precedente backup. Il primo viene chiamato backup completo, i successivi sono backup incrementali. Un backup completo è spesso più laborioso di quelli incrementali, dato che bisogna scrivere più dati sul nastro, e un solo nastro (o floppy) potrebbe non bastare, ma recuperare dati da backup incrementali può essere molto più faticoso che da un backup completo. Il recupero può essere ottimizzato facendo backup di tutto quello che è stato modificato dall'ultimo backup completo; in questo modo fare backup è un po' più laborioso, ma non ci dovrebbe mai essere bisogno di recuperare più che un backup completo e uno incrementale.

Se volete fare backup ogni giorno ed avete sei nastri, potete usare il nastro 1 per il primo backup completo (diciamo di venerdì) e i nastri da 2 a 5 per i backup incrementali (da lunedì a giovedì), poi fate un nuovo backup completo sul nastro 6 (il secondo venerdì) e ricominciate a fare backup incrementali con i nastri 2-5. Non dovete riscrivere il nastro 1 finché non avete un altro backup completo, nel caso vi succedesse qualcosa mentre state facendo il secondo; dopo che avrete usato il nastro 6 per il secondo backup completo, dovreste tenere il nastro 1 in qualche altro posto, in modo che se tutti gli altri nastri venissero distrutti da un incendio avreste ancora almeno un backup da usare. Quando dovrete fare il prossimo backup completo, prenderete il nastro 1 e lascerete il nastro 6 al suo posto.

Se avete più di sei nastri, potete usare quelli che avanzano per i backup completi. Ogni volta che fate un backup completo, usate il nastro più vecchio: in questo modo avrete backup di diverse settimane passate, il che va bene se volete trovare un file vecchio che avete cancellato o una vecchia versione di un altro.

Fare backup con tar

Si può fare facilmente un backup completo con tar:

# tar --create --file /dev/ftape /usr/src
tar: Removing leading / from absolute path names in the archive
#
L'esempio qui sopra usa la versione GNU di tar e le sue opzioni con nomi lunghi. La versione tradizionale di tar capisce soltanto le opzioni di un singolo carattere, la versione GNU può anche gestire backup che non entrano in un singolo nastro o floppy, ed anche percorsi molto lunghi: non tutte le versioni tradizionali lo fanno (Linux usa solo il tar GNU.)

Se il vostro backup non entra in un nastro, dovete usare l'opzione --multi-volume (-M):

# tar -cMf /dev/fd0H1440 /usr/src
tar: Removing leading / from absolute path names in the archive
Prepare volume \#2 for /dev/fd0H1440 and hit return:
#
Notate che dovreste formattare i floppy prima di iniziare il backup, oppure usare un'altra finestra o terminale virtuale e farlo quando tar chiede un nuovo floppy.

Dopo fatto un backup, dovreste controllare che sia a posto, usando l'opzione --compare (-d):

# tar --compare --verbose -f /dev/ftape
usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
....
#
Se non controllate il backup noterete i vostri eventuali errori solo quando avrete perso i dati originali.

Potete fare un backup incrementale con tar usando l'opzione --newer (-N):

# tar --create --newer '8 Sep 1995' --file /dev/ftape /usr/src --verbose
tar: Removing leading / from absolute path names in the archive
usr/src/
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/modules/
usr/src/linux-1.2.10-includes/include/asm-generic/
usr/src/linux-1.2.10-includes/include/asm-i386/
usr/src/linux-1.2.10-includes/include/asm-mips/
usr/src/linux-1.2.10-includes/include/asm-alpha/
usr/src/linux-1.2.10-includes/include/asm-m68k/
usr/src/linux-1.2.10-includes/include/asm-sparc/
usr/src/patch-1.2.11.gz
#
Sfortunatamente, tar non nota quando sono state modificate le informazioni dell'inode di un file, ad esempio i suoi bit di permesso, o il suo nome. Questo può essere aggirato usando find e paragonando lo stato corrente del filesystem con una lista di file compresa nel precedente backup. Sui siti ftp su Linux potete trovare degli script che fanno proprio questo.

Recuperare file con tar

L'opzione --extract (-x) di tar estrae dei file dall'archivio:

# tar --extract --same-permissions --verbose --file /dev/fd0H1440
usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
usr/src/linux-1.2.10-includes/include/linux/kernel.h
...
#
Si possono anche estrarre file o directory specifiche (compresi tutti i file e le sottodirectory in esse contenuti) dandoli sulla linea di comando:
# tar xpvf /dev/fd0H1440 usr/src/linux-1.2.10-includes/include/linux/hdreg.h
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
#
Usate l'opzione --list (-t), se volete solo vedere quali file ci sono in un volume di backup:
# tar --list --file /dev/fd0H1440
usr/src/
usr/src/linux
usr/src/linux-1.2.10-includes/
usr/src/linux-1.2.10-includes/include/
usr/src/linux-1.2.10-includes/include/linux/
usr/src/linux-1.2.10-includes/include/linux/hdreg.h
usr/src/linux-1.2.10-includes/include/linux/kernel.h
...
#
Notate che tar legge sempre i volumi di backup sequenzialmente, quindi per volumi grandi è piuttosto lento. Non è possibile, comunque, usare delle tecniche di accesso casuale quando si usa un'unità a nastro o qualche altro mezzo ad accesso sequenziale.

tar non gestisce bene i file che sono stati cancellati. Se dovete recuperare un sistema da un backup completo e uno incrementale, ed avete cancellato dei file tra i due backup, questi esisteranno di nuovo dopo il recupero, il che può essere un problema serio, se questi file hanno dati importanti che non dovrebbero essere più disponibili.