Ich habe versehentlich in FileZilla einen Ordner in einen anderen gezogen und dort abgelegt.
~/big_folder
~/some_other_folder
Der Ordner, der verschoben wurde, ist sehr groß. Es enthält Hunderttausende von Dateien (node_modules, kleine Bilddateien, viele Ordner)
Was so seltsam ist, ist, dass das Bewegen abgeschlossen ist, nachdem ich meine Maus loslasse. Der Ordner "big_folder" wird in "some_other_folder" verschoben.
~/some_other_folder/big_folder
(Es gibt keine big_folder
in der ~/
nach dem Umzug)
Dann erkenne ich den Fehler und versuche, zurückzukehren, aber es schlägt sowohl auf FileZilla als auch auf dem Terminal fehl.
Dann muss ich cp -r
Dateien zurückkopieren, da serverseitige Codes auf diese Dateien zugreifen~/big_folder
Und es dauert ewig zu warten ...
Was soll ich machen?
Übrigens, hier ist die Ausgabe von FileZilla (es ist der Fehler beim Zurückbewegen):
Status: Renaming '/root/big_folder' to '/root/some_other_folder/big_folder'
Status: /root/big_folder -> /root/some_other_folder/big_folder
Status: Renaming '/root/some_other_folder/big_folder' to '/root/big_folder'
Command: mv "big_folder" "/root/big_folder"
Error: mv /root/some_other_folder/big_folder /root/big_folder: received failure with description 'Failure'
received failure with description 'Failure'
.mv /root/some_other_folder/big_folder /root/big_folder
. Welche Fehlermeldung erhalten Sie?cp -al
mv vs cp
Frage von OP wird angesprochen, aber ich würde gerne hören, warum er den Ordner sofort in die eine, aber nicht in die andere Richtung verschieben konnte.Antworten:
Wenn ein Verzeichnis verschoben im gleichen Dateisystem (die gleiche Partition), dann alles , was benötigt wird , ist der Dateipfad des Verzeichnisses umbenennen. Es müssen keine Daten außer dem Verzeichniseintrag für das Verzeichnis selbst geändert werden.
Beim Kopieren von Verzeichnissen müssen die Daten für jede einzelne Datei dupliziert werden. Dazu müssen alle Quelldaten gelesen und am Zielort geschrieben werden.
Wenn Sie ein Verzeichnis zwischen Dateisystemen verschieben, müssen Sie die Daten auf das Ziel kopieren und von der Quelle entfernen. Dies würde ungefähr so lange dauern, wie das Kopieren (Duplizieren) der Daten in einem einzelnen Dateisystem.
Wenn FileZilla erfolgreich das Verzeichnis aus umbenannt
~/big_folder
zu~/some_other_folder/big_folder
, dann würde ich zurückkommen, dass die Verwendung... nachdem Sie zuerst sichergestellt haben, dass kein Verzeichnis aufgerufen wurde
~/big_folder
(wenn dies der Fall ist, wird der Verschiebevorgang als Unterordnerbig_folder
vonsome_other_folder
in das~/big_folder
Verzeichnis verschoben).quelle
mv ~/some_other_folder/big_folder ~/
nachdem ich sichergestellt hatte, dass sich keine anderebig_folder
im Home-Verzeichnis befindet. Ich habe FileZilla noch nie benutzt.Die vorhandene Antwort ist großartig, aber ich möchte sie ein wenig erweitern, indem ich genau zeige, was passiert, wenn Sie verschieben, und nicht, wenn Sie eine Datei kopieren. Wenn Sie sich die Syscalls während einer Kopie ansehen, sehen Sie:
Dadurch wird die Quelldatei geöffnet und eine zweite Datei erstellt. Es liest dann den Inhalt der Quelldatei in den Speicher und schreibt diesen Speicher in die Zieldatei. Dies erfordert mehrere Kontextwechsel und einige Datenträger-E / A, die für große Dateien sehr hoch sein können. Wenn Sie jedoch eine Datei verschieben, wird Folgendes angezeigt:
Beachten Sie, dass die Datei nur umbenannt wird, wenn sie sich auf derselben Partition auf derselben physischen Festplatte befindet. Wenn Sie eine riesige Datei mit mehreren Gigabyte erstellen und sie dann zwischen zwei Speicherorten in Ihrem Zuhause verschieben, werden Sie feststellen, dass die Aktion sofort abgeschlossen ist. Wenn Sie es andererseits auf ein externes Gerät verschieben, dauert das Verschieben so lange, wie Sie es verwendet haben
cp
. Dies liegt daran, dass das Verschieben einer Datei nur durch Umbenennen erfolgen kann, wenn sie sich auf derselben Partition befindet.quelle
getdents()
undmkdir()
Anrufe haben würden, die herum gestreut werden.