Wie kann ich einen Hardlink in eine normale Datei umwandeln?

Wie kann ich einen Hardlink in eine normale Datei umwandeln?

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 twodenselben 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 filenamefindet 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 findinterpretiert wird ).;-exec

verwandte Informationen