Come trovare tutti gli hard link di un file

Abbiamo visto come creare dei link nel filesystem con il comando ln, e sapiamo quanto sia facile vedere dove punta un soft link. Sappiamo anche che con il comando ls -l possiamo vedere quanti hard link ha un certo file. ma come possiamo trovare dove sono questi hard link?

Numero di inode

Ogni file su un filesystem Unix è identificato dall'id ell'inode che lo contiene. Se due link puntano allo stesso file, puntano quindi anche allo stesso inode, ciò significa che, dato un hard link, è possibile scoprire quali sono gli altri hard link allo stesso file trovando i file che puntano allo stesso inode.

Purtroppo però non c'è un modo immediato per farlo. L'unico sistema è cercarli esaminando i file uno per uno. Per fortuna possiamo usare un paio di comandi per semplificarci la vita.

In primo luogo identifichiamo l'id dell'inode del file di cui vogliamo determinare gli hard link usando ls -i. Poi con questo id possiamo usare il comando find per trovare tutti i file che puntano a quell'inode: find / -inum NUM

Ad esempio:


$ touch file1.txt
$ mkdir test
$ ln file1.txt test/file2.txt
$ ls -i
41167750 file1.txt  
$ find ./ -inum 41167750
./file1.txt
./test/file2.txt

Currently there are no comments, so be the first!