Wenn Sie Hardlinks erstellen, achten Sie auf die Rechte an dieser Datei. Hinweis, Eigentümer, Gruppe, Modus, erweiterte Attribute, Zeit und ACL (falls Sie dies verwenden) werden in INODE gespeichert. Nur Dateinamen unterscheiden sich, da diese in der Verzeichnisstruktur gespeichert sind und andere auf INODE-Eigenschaften verweisen. Aus diesem Grund haben alle Dateinamen, die mit demselben Inode verknüpft sind, dieselben Zugriffsrechte. Sie sollten verhindern, dass diese Datei geändert wird, da jeder Benutzer andere Dateien beschädigen kann. Es ist einfach. Es reicht aus, wenn ein Benutzer eine andere Datei mit demselben Namen erstellt. Die Inode-Nummer wird dann gespeichert, und der ursprüngliche Dateiinhalt wird für alle fest verknüpften Namen zerstört (ersetzt).
Besser ist die Deduplizierung auf Dateisystemebene. Sie können BTRFS (sehr beliebt beim letzten Mal), OCFS oder ähnliches verwenden. Schauen Sie sich die Seite an: https://en.wikipedia.org/wiki/Comparison_of_file_systems , speziell in der Tabelle Features und Deduplizierung von Spaltendaten. Sie können darauf klicken und sortieren :)
Betrachten Sie speziell das ZFS-Dateisystem. Dies ist als FUSE verfügbar, aber auf diese Weise ist es sehr langsam. Wenn Sie native Unterstützung wünschen, besuchen Sie die Seite http://zfsonlinux.org/ . Dann müssen Sie den Kernel patchen und als nächstes die zfs-Tools für die Verwaltung installieren. Ich verstehe nicht, warum Linux als Treiber nicht unterstützt, es ist übrigens für viele andere Betriebssysteme / Kernel.
Dateisysteme unterstützen die Deduplizierung auf zwei Arten, die Deduplizierung von Dateien oder Blöcken. ZFS unterstützt Block. Dies bedeutet, dass derselbe Inhalt, der sich in derselben Datei wiederholt, dedupliziert werden kann. Wenn Daten dedupliziert werden, kann dies auch online (zfs) oder offline (btrfs) sein.
Beachten Sie, dass die Deduplizierung RAM verbraucht. Aus diesem Grund führt das Schreiben von Dateien auf ein mit FUSE bereitgestelltes ZFS-Volume zu einer dramatisch langsamen Leistung. Dies ist in der Dokumentation beschrieben. Sie können die Deduplizierung jedoch online für die Lautstärke ein- und ausschalten. Wenn Sie feststellen, dass Daten dedupliziert werden sollten, müssen Sie nur die Deduplizierung aktivieren, einige Dateien in temporäre Dateien umschreiben und schließlich ersetzen. Danach können Sie die Deduplizierung deaktivieren und die volle Leistung wiederherstellen. Natürlich können Sie dem Speicher beliebige Cache-Festplatten hinzufügen. Dies können sehr schnell rotierende Festplatten oder SSD-Festplatten sein. Dies können natürlich sehr kleine Festplatten sein. In der realen Arbeit ist dies ein Ersatz für RAM :)
Unter Linux sollten Sie sich um ZFS kümmern, da nicht alle Funktionen ordnungsgemäß funktionieren. Dies gilt insbesondere für die Verwaltung des Dateisystems, die Erstellung von Snapshots usw. Wenn Sie jedoch eine Konfiguration vornehmen und diese nicht ändern, funktioniert alles ordnungsgemäß. Andernfalls sollten Sie Linux auf OpenSolaris umstellen, es unterstützt nativ ZFS :) Das Schöne an ZFS ist, dass es sowohl als Dateisystem als auch als Volume-Manager ähnlich wie LVM funktioniert. Sie benötigen es nicht, wenn Sie ZFS verwenden. Weitere Informationen finden Sie in der Dokumentation.
Beachten Sie den Unterschied zwischen ZFS und BTRFS. ZFS ist älter und ausgereifter, leider nur unter Solaris und OpenSolaris (leider von Oracle erwürgt). BTRFS ist jünger, aber letztes Mal sehr gut unterstützt. Ich empfehle frischen Kernel. ZFS verfügt über eine Online-Deduplizierung, die das Schreiben verlangsamt, da alles online berechnet wird. BTRFS unterstützt die Offline-Deduplizierung. Dies spart dann Leistung, aber wenn der Host nichts zu tun hat, führen Sie regelmäßig ein Tool aus, um die Deduplizierung durchzuführen. Und BTRFS wird nativ unter Linux erstellt. Vielleicht ist das bessere FS für dich :)