Mir ist klar, dass jede Datei ein Hardlink ist. Genau das meine ich: Wenn auf einen Inode mehrere Dateien verweisen, wie kann ich den Inode dann so kopieren, dass jede Datei auf einen separaten Inode mit demselben Inhalt verweist?
Zum Beispiel:
echo "Example" > one
ln one two
Wie kann ich dafür sorgen, dass die Datei two
denselben Inhalt hat wie one
, ohne einen Inode gemeinsam zu nutzen? Ich würde die Dateien, wenn Sie so wollen, gerne „verdoppeln“.
Antwort1
Dies kann mit dem Befehl erreicht werden
find -samefile filename -exec sed -i ';;' {} \;
oder wenn Sie jetzt die Inode-Nummer der Datei haben
find -inum inode -exec sed -i ';;' {} \;
Beachten Sie, dass diese beiden Befehle nur die Dateien mit übereinstimmenden Inodes in Unterverzeichnissen des aktuellen Arbeitsverzeichnisses finden. Wenn Sie alle Dateien in Ihrem Dateisystem durchsuchen müssen, müssen Sie diesen Befehl aus dem Stammverzeichnis ausführen.
Der erste Teil find -samefile filename
findet alle Dateien, die denselben Inode teilen. Dann wird es ausgeführt, sed -i ';;'
wodurch die Datei in eine Datei mit demselben Namen kopiert wird (beachten Sie, dass wir das sed-Skript ';;'
anstelle von verwenden ';'
, da das Argument andernfalls als Ende des Befehls find
interpretiert wird ).;
-exec