No, un hard link è completamente diverso. Un collegamento software è più vicino a un collegamento di Windows (anche se ci sono differenze importanti, i collegamenti simbolici sono più simili ai collegamenti di Windows rispetto ai collegamenti reali). Un hard link è una cosa diversa e di cui non avrai quasi mai bisogno.
In breve, viene creato un collegamento software con questo comando:
ln -s foo bar
Se poi corri ls -l
, vedrai:
lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Il ->
mezzo che bar
è un collegamento a foo
. Quindi, l'apertura bar
, ad esempio con un editor di testo, aprirà effettivamente il file separato foo
. Tuttavia, l'eliminazione bar
eliminerà semplicemente il collegamento, non influirà sul file foo
.
I collegamenti reali, d'altra parte, vengono creati con questo comando:
ln foo bar
Se ora esegui ls -l
, non vi è alcuna indicazione di alcuna relazione tra i file:
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Ma — e questo è molto importante — quelli sono in realtà lo stesso file . I file su file system Unix vengono archiviati utilizzando gli inode ; un inode è sostanzialmente il modo in cui il filesystem associa un nome di file a una posizione particolare sul disco rigido fisico. Quindi, i collegamenti reali sono file che puntano allo stesso inode del loro target. Un altro modo per dirlo è che tutti i file sono in realtà collegamenti reali che puntano ai loro inode. Creare un collegamento reale a un file crea semplicemente un nuovo puntatore (file) sul file system che punta allo stesso inode. Ogni inode può avere più file che puntano ad esso o uno o nessuno.
Per capirlo più chiaramente, usa ls -i
quale mostra l'inode associato a un file. Creiamo un soft link e un hard link e vediamo cosa succede:
ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo
Ora controlla i loro inode:
Come potete vedere sopra, sia foo
e HardLinkToFoo
hanno lo stesso inode (16.648.029), mentre SoftLinkToFoo ha uno diverso (16.648.036).
Cosa succede se rinominiamo foo
con mv foo bar
?
Il colore rosso indica un collegamento non funzionante interrotto, il cui obiettivo non può più essere trovato. Questo perché i collegamenti software puntano al nome di un file, non al suo inode. Si noti che nonostante la modifica del nome, l'inode rimane lo stesso, quindi il collegamento fisico va bene, funziona ancora.
In breve, i collegamenti reali sono in realtà due manifestazioni dello stesso file; sono puntatori alla stessa sezione del disco. I soft link sono solo scorciatoie. Per prendere un'analogia dal mondo reale, i collegamenti fisici sono come due numeri di telefono diversi per la stessa linea telefonica e i collegamenti soft sono come avere due linee telefoniche diverse nella stessa casa.