Wie kann man alle Hardlink-Pfade eines bestimmten Inodes auflisten, ohne ein gesamtes Dateisystem in Linux zu durchlaufen?

Wie kann man alle Hardlink-Pfade eines bestimmten Inodes auflisten, ohne ein gesamtes Dateisystem in Linux zu durchlaufen?

Ich würde gerne alle Pfade kennen, die die gleiche Inode-Nummer haben, ich habe gefundenls – Alle Dateien mit derselben Inode-Nummer auflisten? – Unix & Linux Stack ExchangeDie Antwort besteht allerdings darin, das gesamte Inode-haltige Dateisystem mithilfe des findDienstprogramms zu durchlaufen, was bei Dateisystemen mit einer großen Anzahl von Dateien nicht praktikabel ist.

Da die Hardlink-Informationen in einer bestimmten Datenstruktur eines Dateisystems gespeichert werden sollten, ist es möglich, diese Informationen direkt mit einem dateisystemspezifischen Dienstprogramm abzurufen?

Antwort1

Dies wäre nur möglich, wenn der Inode selbst den Speicherort jedes verknüpften Objekts enthielte. Dies ist unpraktisch, da es mehrere weitere Aktualisierungen (und Validierungsschritte) des Inodes selbst erfordert, falls eine der Dateien in der Verzeichnisstruktur verschoben wird. Tatsächliche Dateipfade im Inode zu haben, würde viel mehr Overhead im Inode bedeuten, da er seine Größe dynamisch ändern müsste, um Pfadänderungen oder Umbenennungen auszugleichen, und die Inode-Größe könnte stark variieren.

Stattdessen enthält der Inode nur die Anzahl der Links, nicht wohin oder woher. Diese Anzahl der Links könnte ein einzelnes 32-Bit-Feld sein und führt nicht zu einer Änderung der Inode-Größe. Sie kann „an Ort und Stelle“ aktualisiert werden, anstatt dass das gesamte Element geladen, geändert und dann an einem anderen Ort erneut gespeichert werden muss.

Die einzige Stelle, an der die Inode-Nummer aufgeführt ist, ist das Verzeichnisobjekt selbst. Bedenken Sie, dass Verzeichnisse im Wesentlichen nur spezielle Dateien sind, die andere Dateien miteinander verknüpfen. Auf diese Weise bleibt bei einer Dateiverschiebung die Anzahl der Links gleich und es sind nur ein paar Verzeichnisaktualisierungen erforderlich. Bei einem Löschen oder Hinzufügen handelt es sich um einen Verzeichniswechsel und eine geringfügige Aktualisierung des Inodes.

Daher besteht die einzige Möglichkeit, wie Sie festgestellt haben, darin, das gesamte Dateisystem nach Vorkommen dieses Inodes zu durchsuchen.

verwandte Informationen