Finden aller Hardlinks einer Datei, ohne das Dateisystem zu durchlaufen

9

Ich habe auf dieser Seite gesehen, dass Inodes einen Linkzähler haben , um zu wissen, wie viele Dateien (gelesen: "Verzeichniseintrag") auf diesen Inode verweisen. Gibt es eine Möglichkeit zu wissen, welche Verzeichnisse solche Einträge enthalten, ohne das gesamte Dateisystem zu durchlaufen? Werden diese Informationen irgendwo gespeichert?

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;
    …
};
qdii
quelle
Die schnellste Methode - nur mit Durchquerung - könnte sein find -inum <n> -samefile path.
ott--
2
@ ott-- findwird mit einem -inum oder -samefile aber nicht mit beiden verwendet.
Hauke ​​Laging
@HaukeLaging du hast recht, nur einer von ihnen.
ott--

Antworten:

10

Nein. Verzeichniseinträge, die auf Inodes verweisen, sind Einwegverknüpfungen. Die Inodes verweisen nicht auf die Verzeichniseinträge.

Um eine vollständige Liste der Verzeichniseinträge zu finden, die auf einen Inode verweisen, müssen Sie das Dateisystem durchlaufen, bis Sie genügend Verzeichniseinträge gefunden haben, um die Anzahl der Links im Inode zu berücksichtigen.

Celada
quelle