Trovare tutti gli hard link di un file senza attraversare il file system


9

Ho visto in questa pagina che gli inode hanno un contatore di collegamenti per sapere quanti file (leggi: "directory entry") puntano a questo inode. C'è un modo per sapere quali directory contengono tali voci senza attraversare l'intero file system? Queste informazioni sono archiviate da qualche parte?

struct inode {
    kdev_t                       i_dev;
    unsigned long                i_ino;
    umode_t                      i_mode;
    nlink_t                      i_nlink;
    uid_t                        i_uid;
    gid_t                        i_gid;
    …
};

Il metodo più veloce - solo con traversal - potrebbe essere find -inum <n> -samefile path.
ott--

2
@ ott-- findè usato con uno -inum o entrambi,-samefile ma non con entrambi.
Hauke ​​Laging,

@HaukeLaging hai ragione, solo uno di loro.
ott--

Risposte:


10

No. Le voci della directory che puntano agli inode sono collegamenti unidirezionali. Gli inode non puntano alle voci della directory.

Per trovare un elenco completo di voci di directory che puntano a un inode, è necessario attraversare il filesystem fino a quando non si trovano abbastanza voci di directory da tenere conto del conteggio dei collegamenti dell'inode.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.