Wenn ich den Indexknoten (Inode) einer Datei kenne, aber den Pfad (oder einen der Pfade) nicht kenne, ist es dann möglich, direkt eine feste Verbindung zu diesem Inode herzustellen?
Ich könnte die Datei mit finden sudo find / -inum 123546
und dann einen Hardlink erstellen, aber das wäre für meine Anwendung viel zu langsam.
Hinweis: Ich verwende ein ext4-Dateisystem.
Antworten:
AFAIK, nicht mit der Kernel-API. Wenn eine solche Schnittstelle vorhanden wäre, müsste sie auf den Superuser beschränkt sein, da sonst jeder auf Dateien in Verzeichnissen zugreifen kann, auf die er keinen Suchzugriff hat.
Sie können dies jedoch
debugfs
auf dem Dateisystem tun (sobald es nicht gemountet ist) (vorausgesetzt, Sie haben Schreibzugriff auf das Block-Gerät).(Ersetzen Sie
/dev/block/device
durch das tatsächliche Blockgerät, in dem sich das Dateisystem befindet.)Geben Sie dann an der Eingabeaufforderung von
(mit den spitzen Klammern, wobei 123 durch die tatsächliche Inode-Nummer ersetzt wird), um zu überprüfen, ob die Datei existiert (Inode hat eine Linkanzahl größer als 0) und ist kein Verzeichnis.debugfs
einWenn alles in Ordnung ist, geben Sie Folgendes ein:
zum Erstellen des Hardlinks (beachten Sie, dass der Pfad relativ zum Stammverzeichnis des Dateisystems ist). Gefolgt von: um die Linkanzahl zu erhöhen (drücken Sie Enterfür alle Felder mit Ausnahme der Linkanzahl, bei der Sie dem aktuellen Wert 1 hinzufügen möchten).quelle
Abhängig von Ihrem Anwendungsfall besteht ein anderer Ansatz darin, zuerst alle Dateikandidaten in einem Verzeichnis zu sammeln, indem Sie sie fest verknüpfen und dann die Dateien, an denen Sie besonders interessiert sind, fest verknüpfen.
Sowie
(Unter der Annahme, dass Ihre Inode-Nummern alle unter 1.000.000 liegen, erstellen Sie bei Bedarf weitere Verzeichnisse).
Anschließend werden Ihre Inodes 1000-fach gruppiert und im
by-inode/
Baum gesammelt . Von dort aus können Sie sie nach Bedarf verknüpfen.Beachten Sie jedoch, dass das Löschen von Dateien unter
<path>
nicht den Speicherplatz beansprucht, der durch diesen zusätzlichen festen Link verursacht wird.quelle