Trouver tous les liens physiques d'un fichier sans traverser le système de fichiers

9

J'ai vu dans cette page que les inodes ont un compteur de liens pour savoir combien de fichiers (lire: "entrée de répertoire") pointent vers cet inode. Existe-t-il un moyen de savoir quels répertoires contiennent de telles entrées sans parcourir tout le système de fichiers? Ces informations sont-elles stockées quelque part?

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
la source
La méthode la plus rapide - avec traversée uniquement - pourrait être find -inum <n> -samefile path.
ott--
2
@ ott-- findest utilisé avec soit -inum ou -samefile non à la fois.
Hauke ​​Laging
@HaukeLaging vous avez raison, un seul d'entre eux.
ott--

Réponses:

10

Les entrées de répertoire pointant vers des inodes sont des liens à sens unique. Les inodes ne pointent pas vers les entrées du répertoire.

Afin de trouver une liste complète des entrées de répertoire qui pointent vers un inode, vous devez parcourir le système de fichiers jusqu'à ce que vous ayez trouvé suffisamment d'entrées de répertoire pour tenir compte du nombre de liens de l'inode.

Celada
la source