Znajdowanie wszystkich twardych dowiązań pliku bez przechodzenia przez system plików

9

Widziałem na tej stronie, że i-węzły mają licznik linków, aby wiedzieć, ile plików (czytaj: „pozycja katalogu”) wskazuje na ten i-węzeł. Czy istnieje sposób, aby dowiedzieć się, które katalogi zawierają takie wpisy bez przechodzenia przez cały system plików? Czy gdzieś te informacje są przechowywane?

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
źródło
Najszybsza metoda - tylko z przejściem - może być find -inum <n> -samefile path.
ott--
2
@ ott-- findjest używany albo -inum albo -samefile , ale nie z obu.
Hauke ​​Laging
@HaukeLaging masz rację, tylko jeden z nich.
ott--

Odpowiedzi:

10

Nie. Wpisy katalogu wskazujące na i-węzły są łączami jednokierunkowymi. I-węzły nie wskazują na pozycje katalogu.

Aby znaleźć pełną listę pozycji katalogu wskazujących na i-węzeł, musisz przechodzić przez system plików, aż znajdziesz wystarczającą liczbę pozycji katalogu, aby uwzględnić liczbę odsyłaczy i-węzła.

Celada
źródło