Was macht mv im Fehlerfall?

Was macht mv im Fehlerfall?

Ich habe gerade versucht, einen großen Baum von einer Festplatte auf eine andere zu verschieben, der zu klein war. Jetzt stehe ich vor etwas, das ich nicht wirklich verstehe - es sieht so aus, als wären einige Dateien tatsächlich aus dem Quellbaum verschoben worden, während andere nur kopiert wurden. Das ist höchstwahrscheinlich nicht wahr und ich übersehe einfach etwas, so wie ich es getan habe, als ich den freien Speicherplatz auf der Zielfestplatte überprüft habe. :D

Der Befehl lautete einfach mv source-dir destination-dir, wobei sich beide Verzeichnisse auf unterschiedlichen Datenträgern befinden. Ich verwende mv (GNU coreutils) 7.4. Nirgendwo in der Manpage habe ich die Antworten auf die folgenden Fragen gefunden:

  • dürfen gekürzte Dateien entstehen?
  • Wird im Fehlerfall etwas im Quellbaum gelöscht?
  • wie kann ich mich (einfach und schnell) erholen?

Antwort1

Wenn mv in ein anderes Dateisystem wechselt, kopiert es zuerst alle Daten in das neue Dateisystem. Sobald die neuen Daten kopiert sind, werden die alten Daten entfernt. Das bedeutet, dass der Quellspeicherort bei einer Unterbrechung oder einem Fehlschlag des Wechsels noch alle Daten enthalten sollte.

Was die Wiederherstellung betrifft, sollten nur die Zieldaten beschädigt sein. Anstatt mv erneut zu verwenden, verwenden Sie einfach rsync und dann rm manuell

rsync -av source-dir/ dest-dir/
rm -rf source-dir

Antwort2

Ich denke, die Einleitung der infoSeite beantwortet alle Ihre Fragen:

Zuerst wird ein Teil des gleichen Codes verwendet, der auch von `cp -a' verwendet wird, um die angeforderten Verzeichnisse und Dateien zu kopieren. Anschließend werden (vorausgesetzt, das Kopieren war erfolgreich) die Originale entfernt. Wenn das Kopieren fehlschlägt, wird der Teil entfernt, der auf die Zielpartition kopiert wurde. Wenn Sie drei Verzeichnisse von einer Partition auf eine andere kopieren und das Kopieren des ersten Verzeichnisses erfolgreich war, das des zweiten jedoch nicht, verbleibt das erste auf der Zielpartition und das zweite und dritte auf der Originalpartition.

Die Wiederherstellung sollte kein Problem sein, da die Daten erhalten bleiben. Ich weiß nicht, wie sehr es versucht,atomar( mkdirz. B. ist eine Quellüberprüfung erforderlich) oder ob dies überhaupt in seiner Domäne liegt (im Gegensatz zur Domäne des Kernels), aber es könnte zu Beschädigungen kommen, wenn die Unterbrechung auftritt, während die Quelle bereits gelöscht wird. Zu diesem Zeitpunkt hätten Sie bereits eine gute Kopie im Zielverzeichnis, sodass eine einfache Überprüfung der Bytegröße ausreichen könnte.

EDIT: Ich habe einige Tests mit riesigen Dateien (einige G) durchgeführt, die mit erstellt wurden dd, aber ohne schlüssige Ergebnisse. Ich habe es nie geschafft, nur einige der Quellen zu kopieren – entweder habe ich den gesamten Vorgang abgebrochen (da er zu schnell war) oder hatte danach aufgrund des Festplatten-Cachings und vielleicht eines guten Dateisystemdesigns überhaupt keine Chance mehr (mein ^C landete immer, nachdem die Verschiebung erfolgreich war).

verwandte Informationen