BACKUP E COMANDI DI
ARCHIVIAZIONE FILE

Precedente
Programma
Seguente
Bastard Operator From Hell!
tar -cvf nomearchivio.tar <files o directory>
  Sintassi comunemente utilizzata per creare un nuovo archivio.
tar -xvf nomearchivio.tar
  Sintassi comunemente utilizzata per estrarre un archivio.
tar -tvf nomearchivio.tar
  Con l'opzione -t elenca il contenuto dell'archivio evitando la decompressione dello stesso
tar -c /
  Un breve comando copiare per creare un tar dell'intero file system.
tar -c 'find / -mtime -1 ! -type d -print'
  Esempio di un semplice script che esegue il backup solo dei file modificati nell'ultimo giorno. Vengono escluse le directory intere.
tar -xp nome.tar /home/pippo/file.doc
  Estrae da nome.tar solo il file /home/pippo/file.doc, mantenendone gli attributi.
Tips & Tricks

E' possibile creare direttamente un archivio tar comprimendolo in formato gz tramite la seguente riga di comando tar -zcvf

Alcuni strumenti gratuiti di backup sotto Linux:
tar, cpio, taper, rsync, afbackup amanda.
Alcuni software commerciali:
BRU, Arkeia

Importanza del backup
Il backup del proprio sistema è fondamentale.
Una buona procedura di recupero file, in caso di disastro, fa la differenza fra una catasfrofe e una scocciatura.
A prescindere dal sistema utilizzato per eseguire il backup, ci sono due approcci al problema:
- Backup completo dell'intero file-system;
- Backup solo dei dati, dei file di configurazione e dei programmi non reinstallabili velocemente.
In ogni caso è importante che la macchina su cui viene fatto il backup non sia la stessa di cui viene fatto il backup e che, possibilmente, siano in due locazioni fisiche (o quantomeno i supporti dove vengono archiviati i file) diverse e lontane.
Comandi di archiviazione file
tar [opzioni] filename1 filename2 filename[n] Questo comando viene ampiamente utilizzato per creare (estrarre) archivi .tar
Spesso viene utilizzato in combinazione con gzip per creare archivi compressi .tar.gz e .tgz
gzip [num] [opzioni] filename Comando per comprimere file ed archivi in formato gz che, fra le altre cose permette di scegliere il grado di compressione [num].
In ambiente Linux / Unix è il più utilizzato
gunzip [opzioni] filename.gz Comando inverso di gzip
bzip2 [opzioni] filename Comando per comprimere file ed archivi in formato bz2, ha il vantaggio di avere un rapporto di compressione maggiore di gz
bunzip2 [opzioni] filename.bz2 Comando inverso di gzip
zip [opzioni] filename Comprime file e archivi, è basato sull'algoritmo standard per PC pkzip, raramente si utilizza questo formato in ambiente linux e unix
unzip [opzioni] filename.zip Comando inverso di unzip

rsync: una soluzione per il backup

Fra i vari strumenti utilizzabili per il backup, ci sentiamo si consigliare il comando rsync, che permette la copia differenziale di file via rete, ottimizzando i tempi di backup e ripristino dei dati.
Esempio: Per eseguire una copia (mantenendo le proprietà dei file originali) della intera directory home dell'host 10.0.0.10 sull'host 10.0.0.2:
rsync -av 10.0.0.10::casecondivise/* /backup/10.0.0.10/home/

Analizziamo la sintassi:

-av L'opzione che dice di copiare i file in archive mode (directory recursive, mantendo ownership e permessi);
10.0.0.10 L'indirizzo del host da backuppare
casecondivise Il nome della condivisione configurata sull'host ba backuppare
* Wildcard per indicare tutti i file
/backup/10.0.0.10/home Path locale della macchina su cui vengono copiati i file.
La prima volta che si esegue questo comando tutti i file presenti nella /home di 10.0.0.10 vengono copiati, le volte successive vengono copiati solo quelli modificati dall'ultimo backup.

Sull'host 10.0.0.10 deve essere in esecuzione rsync in modalità server (comando: rsync --daemon) e deve essere presente il file /etc/rsyncd.conf con una struttura simile:

[casecondivise] Il nome della condivisione che rsycnd esporta.
path = /home/ Il path locale corrispondente a questa condivisione
read only = yes Per un backup non è necessario avere permessi in scrittura
uid = root L'utente con cui rsync accede al file system. Come root può leggere tutti i file
gid = root Il gruppo con cui rsync accede al file system.
hosts allow = 10.0.0.2 Gli IP da cui è possibile collegarsi via rsync.
list = false Impedisce di elencare le condivisioni disponibili sul server rsync

Come si può immaginare rsync è uno strumento estremamente potente, che permette diverse operazioni di copia di file fra due host.
In quanto tale è anche estremamente pericoloso in termini di sicurezza, visto che non vengono nemmeno richieste password.
Per questo motivo è sempre consigliabile:
- Specificare e limitare gli indirizzi IP degli host che possono accedere al server rsync;
- Permettere accessi solo in lettura e non in scrittura (per un backup questo basta, in altre applicazioni potrebbe essere necessario dover scrivere sul rsync server, in questo caso prestare particolare attenzione agli IP abilitati e all'utente con cui rsync accede al file system).
- Se possibile utilizzare come uid e gid degli utenti normali e non root (per un backup, a meno che non si voglia cambiare il permessi dell'intera directory home, l'utente root è necessario);
- Se possibile, rafforzare la sicurezza sugli IP sorgenti con ACL sui router o iptables sul server rsync.

WEB RESOURCES
http://www.gnu.org/software/tar/tar.html Sito ufficiale di tar
http://sources.redhat.com/bzip2/ Sito ufficiale di bzip2
http://samba.anu.edu.au/rsync/ Sito ufficiale di rsync
http://www.linuxberg.com/system/backup.html Un elenco di software di backup da linuxberg.com (Tuwcos)
http://www.storagesearch.com/backup.html Altra directory di software di backup, commerciale, per Linux e altri OS.
http://www.geo.arizona.edu/geos256/lectures/compression.html File compression - Una visione d'insieme