Das, wonach Sie fragen, ist in keinem der mir bekannten Dateisysteme möglich, da sie wie hier beschrieben implementiert werden. Und ich verstehe nicht, warum Sie sich anfangs um die Metadaten kümmern?
Erstens sind die einzigen Daten im Verzeichniseintrag der Dateiname und die Inode-Nummer.
Zweitens wird eine feste Verknüpfung hergestellt, wenn Sie zwei oder mehr Dateinamen mit derselben Inode-Nummer erstellen .
Der Inode speichert alles andere, z. B. atime und mtime, und andere Metadaten, einschließlich "Zeiger" auf die Datenblöcke der Datei.
Wenn Sie zwei Dateien mit gleichem Inhalt haben, die Inodes jedoch unterschiedlich sind, unterscheiden sich die meisten Metadaten in den Inodes. Beispiel: atime und mtime unterscheiden sich, wie auch alle Datenblockzeiger.
Um eine feste Verknüpfung zu verwenden, um die Speicherbelegung zu reduzieren, würden Sie die eine oder andere der duplizierten Dateien löschen, wodurch auch der Inode "geschlossen" wird und alle Metadaten verloren gehen. Sie erstellen dann eine Verknüpfung zu der verbleibenden vorhandenen Datei, und verwenden Sie dabei den Namen und den Verzeichnispfad der gerade gelöschten Datei.
Der „neue“ Dateilink hat nun alle die gleichen Inode Informationen wie die, die Sie gerade verbunden ist . Die einzigen Unterschiede sind der Ort in der Verzeichnishierarchie und der verwendete Name, die im Verzeichniseintrag gespeichert sind, nicht der Inode.
All dies wird über die Systemaufrufe abgewickelt, die zum Erstellen von Dateien, Links und Verzeichnissen verwendet werden, und kann von keinem Benutzer oder keiner Software, einschließlich "root", direkt geändert werden. Sie könnten es lesen und die Daten in einer separaten Datei speichern, aber die einfache Zuordnung einer Verzeichnishierarchie geht verloren.