Christian Seiler: Linux I-Nodes

Beitrag lesen

Hallo Jörg,

Existiert unter Java eine Klasse, mit der man die Linux-Inode-Nummer einer Datei ermitteln kann?

Naja, ne kurze Suche im Internet hat mich zu folgendem geführt: http://www.bmsi.com/java/posix/package.html - dort gibt's ne Klasse, die java.io.File erweitert und eine Methode getStat() bietet, die Dir ein Objekt zurückgibt, das als Attribut die Inode-Nummer enthält. Ich habe allerdings keine Ahnung, wie empfehlenswert das Paket da ist.

(Hintergrund: Die Datei soll auch noch auffindbar sein, wenn sie unter Linux mit "mv" wegverschoben wurde. Deswegen kommen Pfad-Angaben zur Identifikation eigentlich nicht in Frage...Inodes hingegen wären perfekt)

Nein, wären sie nicht. Folgende Situation: Du hast eine Datei »hallo«. Du gibst jetzt auf der Kommandozeile »ln hallo bonjour« ein. Damit erzeugst Du einen Hard-Link von »hallo« auf »bonjour«. Nach dieser Operation kannst Du jedoch nicht mehr feststellen, ob »bonjour« jetzt ein Hardlink auf »hallo« ist oder »hallo« ein Hardlink auf »bonjour« - Du siehst *danach* nur zwei Verzeichniseinträge mit dem Namen »hallo« und »bonjour«, die beide auf die gleiche (!) INode zeigen.

Und noch etwas anderes: Was passiert, wenn Du die Datei zuerst kopierst und dann löschst? Dann ändert sich die INode-Nummer der Datei, die aber vom Inhalt her noch die gleiche ist.

Ich halte deswegen Deinen Wunsch, eine Datei unabhängig ihres Dateinamens zu identifizieren, für nicht machbar.

Viele Grüße,
Christian

--
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup