
Link simbolici e hard link

L'utilizzo dei link (collegamenti)
è molto diffuso in ambito
GNU/Linux. In particolare perché forniscono
un sistema elegante ed efficiente
per collegare virtualmente un file ad
un altro o una directory ad un altra, rendendo
così più flessibile la struttura del
file system e perché no, più agevole la
navigazione al suo interno. Possono essere di due tipi: symlink (detti anche
softlink) e hardlink. Sebbene apparentemente
simili, essi presentano alcune
differenze che ne rendono adatto
l'utilizzo in ambiti molto diversi. La differenza
più evidente è che un link simbolico
(il symlink in italiano) si collega a
un determinato file esistente o a una
directory ai quali l'utente può fare riferimento
mediante il link stesso, ma, qualora
il file originale venisse distrutto, il
collegamento non “punterà” più a nessun
contenuto valido. Al contrario, l'hardlink
è una vera e propria copia del file originale,
e continuerà ad “esistere” anche
dopo la sua distruzione. Purtroppo,
quest'ultimo non può essere utilizzato
per creare collegamenti a directory.
Nell'esempio che segue creeremo
un semplice file di testo (link) e subito
dopo un link simbolico ad esso collegato
(link_soft):
echo “File di prova per
lavorare sui link” > link
ln -s link link_soft
A questo punto, utilizzando il comando
ls -la possiamo notare che il link ha dimensioni
ridotte al minimo, indipendenti
dalle dimensioni del file originale. Per
creare un link hard, invece, basta omettere
lo switch -s, come abbiamo fatto
di seguito:
ln link link_hard
Anche in questo caso, utilizzando il comando
ls -la è possibile analizzare il
file. La differenza più evidente è che in
questo secondo caso il collegamento
ha dimensioni pari all'originale. Bisogna
fare attenzione a una cosa però:
cancellando il file sorgente ci accorgeremo subito che il collegamento soft risulterà
vuoto mentre in quello hard avremo
ancora la riga scritta in precedenza.
Prima però di cancellare i file è interessante
digitare il comando ls con l'opzione
-i che mostra gli inode relativi al file.
Ebbene, il link di tipo hard presenta
gli stessi inode del file originale e questo
significa che la sua copia non occupa
realmente spazio su disco.