Il testing non può mai rivelare l'assenza di bug.

— Edsger Wybe Dijkstra

ArchLinux Small Business Server (28) - Backup (2)

http://www.stenoweb.it/files/blog/archlogo.png Prima di esaminare gli script di backup veri e propri ritengo sia indispensabile capire il principio su cui si basa la tecnica di snapshot. Per qualcuno questa discussione potrà risultare noiosa (in questo caso potete saltare la lettura di questo post e attendere il prossimo con gli script di backup), invito i più curiosi, invece, a continuare la lettura: sono più o meno gli stessi principi su cui si basa la "famosa" che Apple fornisce con il suo MacOS o la meno "famosa" disponibile per Linux. Capendo la teoria vi sarà più facile gestire il processo di backup in caso di noie e, sopratutto, il restore dei dati.

Soft Link & Hard Link

Per capire il funzionamento basilare di questa tecnica dobbiamo fare un passettino indietro ripassando due concetti tipici dei file system Linux (e non solo) come i Soft Links (o symbolic links) e gli Hard Links. Che differenza c'e' tra i due ?

Soft Link

Normalmente la situazione è questa che vediamo in figura 1:
http://www.stenoweb.it/files/blog/snapfig1.png
Ora creiamo un soft link / symbolic link al file file1.txt con il comando :

ln -s file1.txt file2.txt

Cosa è successo ? Lo possiamo schematizzare con la figura 2:
http://www.stenoweb.it/files/blog/snapfig2.png
Abbiamo, in pratica, creato una sorta di alias di file1.txt chiamato file2.txt. In effetti ora possiamo accedere ad entrambi i "nome file" con il medesimo risultato, o quasi. Il quasi è riferito alla cancellazione. Cosa succede se elimino file2.txt?
rm file2.txt

Direi assolutamente niente, file1.txt continua a esistere, ho solo eliminato il link appena creato. Ma se invece elimino file1.txt:
rm file1.txt

il discorso cambia radicalmante: file2.txt diventa "orfanello" non puntando più a nulla e i dati vengono eliminati dal file system. Mi sembra abbastanza chiaro, insomma.

Hard Link

Ora veniamo al secondo punto. Cambiamo leggermente il comando ln togliando il flag -s:

ln file1.txt file2.txt

il questo caso qualcuno potrebbe pensare che ho creato un hard link chiamato "file2.txt" al file "file1.txt", cosa concettualmente non propriamente vera. Dopo il comando ln la situazione è questa:
http://www.stenoweb.it/files/blog/snapfig3.png
cioè ho creato un hard link ai dati puntati da "file1.txt", può sembrare una sottigliezza linguistica, ma non è così, il concetto è totalmente diverso e lo possiamo capire vedendo cosa succede cancellando file1.txt :
rm file1.txt

in questo caso file2.txt continua ad esistere e i dati rimangono sul file system, accessibili mediante file2.txt. Così:
http://www.stenoweb.it/files/blog/snapfig4.png

Abbastanza chiaro ?

Diamo ancora una occhiata alle figure: ma cos'e' file1.txt ? Dovreste già aver intuito che altro non è che un hard link ai dati esso stesso, creato, diciamo, automaticamente nel momento il cui è stato generato il file (o meglio i dati del file). Ogni cosa, ad eccezzione dei soft link e delle cartelle, sono in effetti hard link. Quindi se pensavate di non averli mai usati vi sbagliavate di grosso :).

Tra gli hard link non esiste alcun rapporto gerarchico, file1.txt, file2.txt e tutti i possibili altri che puntano ai medesimi dati hanno la stessa importanza, i dati a cui si riferiscono continueranno ad esistere fintanto che ci sarà un hard link che punta ad essi.

In questa frase in grassetto, come vedremo, c'e' tutto il principio di funzionamento dello snapshot backup. Se avete capito questo siete già a metà dell'opera.

E i soft links ? Bè, per quanto riguarda il backup non ce ne frega più niente :)

Alla prossima vedremo come possiamo sfruttare questa caratteristica degli hard link per eseguire i nostri sospirati backups.

Molto interessante! Aspetto ansiosamente la prossima puntata ;)

Acc.. peggio delle telenovele.
E dicci chi è l'assassino!

LOL

//Lost// mi fà na pippa :)
Sto pensando a quale scegliere tra i due o tre finali alternativi...

LOL

Un'informazione...la tecnica che vuoi implementare (che tra l'altro ritengo moooolto interessante) funzionerebbe anche su una partizione partizionata ntfs e montata con ntfs-3g? in altri termini...gli hard links vanno anche con ntfs-3g? ciao e grazie
ps
leggo spesso il tuo blog...proprio bello ed interessante

@francux
Diciamo che NT4/W2K/WXP con NTFS supportano gli hard link, altro discorso ntfs-3g con linux.
Cmq mi pare proprio di no, molto meglio usare filesystems nativi, ext2, ext3, xfs ecc.. così vengono "passate" anche le permissions.
ext2 è cmq accessibile anche da windows, basta un driver.