Link fisici ed i link simbolici

Il nome di un file rappresenta un riferimento ad un punto all'interno del disco dove sono memorizzati i dati contenuti nel file stesso. In realta' sarebbe piu' corretto dire che ad ogni nome di file viene associato l'i-node del file stesso. Cioe', per ogni file esiste una coppia 'nome del file'/i-node.

ls -l pippo
-rw-rw--rw 1 mau utenti 553, Jul 18 1994 /home/mau/pippo

Il numero precedente al nome del proprietario del file (1) e' il numero di link che tale file possiede.

Creare un ulteriore link percio' significa creare un ulteriore nome per referenziare il file o, se si preferisce, un ulteriore handle. Il comando che permette cio' e' il comando ln (LiNk, cioe' collegamento):

link fisico (hard link)

ls
pippo, pluto, topolino
ls -l pippo
-rw-rw--rw 1 mau utenti 553 Jul 18 1994 /home/mau/pippo
ln pippo pippo2 (creo il secondo nome 'pippo2' al file pippo)
ls
pippo, pluto, topolino, pippo2
ls -l pippo
-rw-rw--rw 2 mau utenti 553 Jul 18 1994 /home/mau/pippo
ls -l pippo2
-rw-rw--rw 2 mau utenti 553 Jul 18 1994 /home/mau/pippo2

ls -i visualizza il numero di i-node (-i sta per i-node appunto)

 ls -i pippo pippo2
15436 -rw-rw--rw 2 mau utenti 553 Jul 18 1994 /home/mau/pippo
15436 -rw-rw--rw 2 mau utenti 553 Jul 18 1994 /home/mau/pippo2

un file viene cancellato effettivamente solo quando vengono eliminati tutti i suoi link

Per creare un link simbolico occorre usare il comando ln con l'opzione -s:

ln -s pippo pippo2

questo comando crea un link simbolico, cioe' un file speciale che contiene il percorso del file originario. Per evidenziare cio' si puo' usare il comando ls con le opzioni i ed l:

ls -il pippo pippo2
15436 -rw-rw--rw 1 mau utenti 553 Jul 18 1994 /home/mau/pippo
15437 lrw-rw--rw 1 mau utenti 5 Jul 18 1994 /home/mau/pippo2 -> /home/mau/pippo

In quali casi e' utile usare un link simbolico? Ad esempio quando si vuole creare un link ad una directory oppure quando si vuole creare un link ad un file o ad una directory che si trova all'interno di un filesystem diverso. Con un link simbolico infatti e' possibile far riferimento ad un file che si trova in un dispositivo diverso o addirittura in un filesystem diverso.