Nachdem Sie Stephen Kitts Antwort erhalten und diesen Befehl als mögliche Lösung erörtert haben:
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
Ich beschloss, es zu unterbrechen, bis mir klar wurde, was passierte. Diese Antwort beschreibt, was ich herausgefunden und am Ende getan habe.
Ich verwende Gnu, mv
das Dateien auf das Ziel kopiert. Nur wenn der Kopiervorgang erfolgreich ist, wird das Original gelöscht.
Ich wollte jedoch überprüfen, ob mv
diese Sequenz Datei für Datei ausgeführt wird. Wenn dies zutrifft, wurde der ursprüngliche Ordnerinhalt sauber in zwei Teile aufgeteilt, wobei ein Teil an den Zielort verschoben wurde und der andere Teil noch an der Quelle zurückgelassen wurde. Und möglicherweise gibt es eine Datei, die während des Kopiervorgangs unterbrochen wurde, was für beide Verzeichnisse gleich wäre - und wahrscheinlich ist sie fehlerhaft.
Um Dateien zu finden, die zwischen den beiden Verzeichnissen gemeinsam waren, habe ich Folgendes ausgeführt:
~% sudo diff -r --report-identical-files my_data_on_60GB_partition/. /media/admin/mydata/. | grep identical | wc -l
14237
Dieses Ergebnis legt nahe, dass sowohl im Quell- als auch im Zielverzeichnis 14.237 Instanzen der gleichen Dateien vorhanden sind. Ich habe dies durch manuelles Überprüfen der Dateien bestätigt. Ja, in beiden Verzeichnissen befinden sich viele der gleichen Dateien. Dies legt nahe, dass nur nach dem mv
Kopieren großer Datenmengen die Quelldateien gelöscht werden. Ein kurzer Blick info
auf das mv
Kommando zeigte
Es [ mv
] verwendet zunächst denselben Code, der cp -a
zum Kopieren der angeforderten Verzeichnisse und Dateien verwendet wird, und entfernt dann (vorausgesetzt, die Kopie war erfolgreich) die Originale. Wenn das Kopieren fehlschlägt, wird der Teil entfernt, der auf die Zielpartition kopiert wurde.
Ich habe den Befehl nicht ausgeführt, aber ich vermute, dass ich versucht habe, ihn auszuführen
sudo mv -i ~/my_data_on_60GB_partition/* /media/admin/my_data/
Die -i
Eingabeaufforderung vor dem Überschreiben hätte wahrscheinlich mehr als 14.000 Mal ausgelöst.
Um herauszufinden, wie viele Dateien sich insgesamt im neu erstellten Verzeichnis befinden, gehen Sie wie folgt vor:
~% sudo find my_data_on_60GB_partition/ -type f -a -print | wc -l
14238
Wenn sich also insgesamt 14238 reguläre Dateien im neuen Verzeichnis befanden und 14237 identische Originale in der Quelle hatten, bedeutet dies, dass sich nur eine Datei im neuen Verzeichnis befand, die keine entsprechende identische Datei in der Quelle hatte. Um herauszufinden, was diese Datei ist, habe ich rsync zurück in Richtung der Quelle ausgeführt:
~% sudo rsync -av --dry-run my_data_on_60GB_partition/ /media/admin/my_data
sending incremental file list
./
Education_learning_reference/
Education_learning_reference/Business_Education/
Education_learning_reference/Business_Education/Business_education_media_files/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/
Education_learning_reference/Business_Education/Business_education_media_files/Jeff Hoffman - videos/Jeff and David F interview/018 business plans-identifying main KPIs.flv
sent 494,548 bytes received 1,881 bytes 330,952.67 bytes/sec
total size is 1,900,548,824 speedup is 3,828.44 (DRY RUN)
Eine schnelle Überprüfung bestätigte, dass dies die fehlerhafte Datei war, bei der die Datei sowohl auf der Quelle als auch auf dem Ziel vorhanden war. Zieldatei = 64 MB, Original = 100 MB. Diese Datei und ihre Verzeichnishierarchie befanden sich noch im Besitz von root und hatten noch nicht die ursprünglichen Berechtigungen wiederhergestellt.
Also zusammenfassend:
- Alle Dateien, die
mv
nie erreicht wurden, befinden sich (offensichtlich) noch an ihrem ursprünglichen Speicherort.
- Alle Dateien, die
mv
vollständig kopiert wurden, hatten noch ihre Originalkopien im Quellverzeichnis
- Die Datei, die nur teilweise kopiert wurde, hatte immer noch das Original im Quellverzeichnis
Mit anderen Worten, alle Originaldateien waren noch intakt und die Lösung bestand in diesem Fall darin, einfach das neue Verzeichnis zu löschen!
Control-Z
(zu pausieren) anstattControl-C
. In diesem Fall können Sie dann sehen, welche Datei zu diesem Zeitpunkt übertragen wurde, und wissen, welche Datei nur teilweise kopiert wurde. Sie können dann ruhig entscheiden, wie Sie vorgehen möchten. (Verwendungkill -stop
für Prozesse, die nicht im tty enthalten sind).