Cobra78 ha scritto:
Al contrario ho capito perfettamente, in pratica il symlink è un collegamento al file nel senso classico del termine, mentre l'hard link è qualcosa di terribilmente vicino alla copia del file stesso.
Si credo proprio di avere capito.
Il concetto di copia è leggermente diverso: se copi un file il suo numero di inode è differente dal file originale, pur avendo il suo stesso contenuto, quindi si tratta di due "collegamenti" che puntano a due inodi diversi.
Viceversa il file originale e un suo hard link non sono altro che due collegamenti allo stesso inodo; in sostanza l'icona di un file che puoi vedere in una qualsiasi cartella non è il file vero e proprio ma un collegamento ad esso.
Esempio:
$ touch pippo (creiamo dalla shell un file di nome pippo)
$ ls -il pippo (guardiamo i suoi attributi, compreso il numero di inode -i)
3949013 -rw-r--r-- 1 stefano stefano 0 2006-02-03 14:37 pippo
La prima cifra è il numero di inode, il numero 1 prima di stefano rappresenta il numero di collegamenti all'inodo, ovvero pippo non è altro che un collegamento all'inodo 3949013.
$ ln pippo topolino (creiamo un'hard link di nome topolino)
$ ls -il pippo topolino (guardiamo gli attributi di entrambi)
3949013 -rw-r--r-- 2 stefano stefano 0 2006-02-03 14:37 pippo
3949013 -rw-r--r-- 2 stefano stefano 0 2006-02-03 14:37 topolino
Stesso numero di inode; come puoi vedere il numero di collegamenti allo stesso inodo è ora pari a 2, il collegamento originale (pippo) e l'hard link (topolino).
A questo punto cancelliamo pippo:
$ rm pippo
$ ls -il topolino (guardiamo le proprietà di topolino)
3949013 -rw-r--r-- 1 stefano stefano 0 2006-02-03 14:37 topolino
Ora esiste solo più un collegamento all'inodo 3949013.