Ich arbeite mit Ordnern, die viele Dateien enthalten, z. B. 100.000 oder sogar 1.000.000 Dateien pro Ordner. Wenn ich versuche, den Inhalt eines Ordners in einen anderen zu verschieben, bleibt mein Computer immer hängen. Selbst wenn der Vorgang abgeschlossen zu sein scheint, kann ich den Inhalt eines Ordners nicht sehen, da Nautilus vollständig eingefroren zu sein scheint und ich meinen Computer zum Neustart zwingen muss. Mir ist aufgefallen, dass dies auch passiert, wenn ich versuche, wie 10 000 Dateien zu verschieben.
Ist das ein Problem meines Computers oder ist es normal, wenn ich mit diesen Nummern arbeite?
Gibt es eine clevere Möglichkeit, diese Dateiübertragung durchzuführen?
cp -R SRC/ DEST/
)gvfs-copy
(aus demgvfs-bin
Paket) kann schneller sein alscp
.Antworten:
Erwägen Sie möglicherweise die Verwendung einer reinen Befehlszeilenmethode zum Übertragen sehr großer Dateien. Sie werden zweifellos feststellen, dass der Vorgang wesentlich schneller ist als die Verwendung einer GUI.
Es gibt viele verschiedene Möglichkeiten, um dies zu erreichen, aber die folgenden haben auf meinem System schnell, sicher und effizient funktioniert:
Einige Erklärungen für diesen Befehl:
<destination>
in meinem Beispiel. Passen Sie dies natürlich an Ihre Bedürfnisse an und lassen Sie die Klammern weg.Endlose Permutationen sind möglich, aber dies sollte gut und viel effizienter als die GUI funktionieren . Eine Permutation zum Beispiel: Wenn Sie nur PDF-Dateien verschieben möchten, können Sie Folgendes ausführen:
Die Verwendung von
xargs
eröffnet viele Möglichkeiten, insbesondere beim Verschieben einer so großen Anzahl von Dateien. Viele, viele Möglichkeiten ....Potenzielle Probleme:
Es gibt mindestens zwei mögliche Fallstricke, über die man nachdenken kann, dank der Kommentatoren unten für diese Gedanken:
mv
werden die Dateien weiterhin dorthin verschoben! Sei hier vorsichtig ...-t
Option (--target-directory
) fehlt und der Zielordner tatsächlich eine Datei ist, verschieben Sie eine Datei und schlagen im Übrigen fehl.mv
hat 2 verwendet: Umbenennungs der Quelle zum Ziel oder verschieben Quelle Verzeichnis . Seien Sie wieder vorsichtig ...quelle
find . -maxdepth 1 -type f -exec mv -t test {} +
tun?-name...
Stück zurechtgeschnitten, aber ich habexargs
an Ort und Stelle gelassen .-t
Flagge? Ich denke , alle Dateien würden „verschoben“ zu einer einzigen Datei aufgerufen werdentest
, was den Verlust aller Dateien mit einer Ausnahme.) Ich glaube , ich würde ein lieberrsync
von gefolgt, wenn alles gut gegangen ist, arm
. Ich kann mir jedoch Szenarien vorstellen, in denen eine solche Überprüfung nicht automatisiert werden kann.rsync
Beispiel als Antwort zu sehen?mv dir1/* dir2
und nur dann,find -exec
wenn es ein Problem gibt oder wenn Sie vermeiden müssen, Ordner mit Ihrem Glob abzugleichen. (Obwohl dies von Ihren Namenskonventionen abhängt,*.*
stimmen häufig die meisten Dateien, aber nicht die meisten Verzeichnisse überein, da es häufig vorkommt, dass.extension
Dateien aktiviert sind und.
Verzeichnisnamen nicht vorhanden sind.)Ich hatte vorher ähnliche Erfahrungen gemacht, es ist normal, wenn es um eine große Anzahl von Dateien geht. Ich hatte eine große Sammlung von PDF-Datenblättern (elektronische Teile).
GUI-Tools suchen nach Dateidetails und Metadaten (Icon / Thumbnail, Size, ...). In diesem Fall ist dies eine große Sache. Selbst in der Symbolansicht und ohne Miniaturansichten frieren sie ein, da die meisten von ihnen nicht für diesen Extremfall ausgelegt sind. Das GUI-Tool versucht, Präsentationssymbole für alle Dateien / Ordner im Verzeichnis zu laden, auch wenn diese Elemente für den Benutzer im aktuellen Bildschirmbereich nicht sichtbar sind. Das Sortieren ist ebenfalls Teil des Problems und kann nicht umgangen werden.
locate
für die schnelle Suche anstelle von verwendenfind
.Verwenden Sie für den Verschiebevorgang
mv
im Terminal (GUI-Tools sind langsam, da sie versuchen, die Ansicht regelmäßig zu aktualisieren).Wenn es sich in derselben Partition befindet, ändert der Befehl nur die Zeiger im Dateisystemindex. Wenn nicht, wird es Dual-Operation sein (Kopieren & Löschen). Das wird teuer.
Es gibt nur einen Fall, bei dem ich helfen kann: Wenn Sie diese Dateien mehrmals kopieren und sie nicht aktualisiert werden. Jedes Mal, wenn ich versuche, meine Sammlung zu kopieren, dauert es ein Jahrzehnt. (Dies ist nur bei kleinen Dateien nützlicher.)
quelle
Wenn Sie nach einer Lösung suchen, die die Vorteile der Befehlszeilenoperationen mit dem GUI-Feeling und der Flexibilität kombiniert, empfehle ich
mc
( Mitternachtskommandant ).Es ist ein ncurses-basierter visueller Dateimanager - Sie haben eine Ansicht mit zwei Fenstern für Ihre Dateien und ein Menü zur Verfügung. Die Verwendung der Maus ist auch über SSH möglich. Sie können in Ihrem Dateisystem stöbern, Dateien mit dem Datei-Viewer untersuchen, direkt nach Kriterien filtern und die Kopier- oder Verschiebevorgänge in der Befehlszeile ausführen.
Es ist ein Klon des DOS-Programms Norton Commander , das Mitte der achtziger Jahre populär war. Es funktioniert immer dann, wenn die GUI für mich unzuverlässig wird, und ist ideal für Ihren Zweck.
quelle
Ich bin auf ähnliche Probleme gestoßen - ich habe mein RAID-Setup getestet und bei großen Übertragungen (z. B. mehr als 100.000 Dateien und 1-2 TB Daten auf einmal) scheinen die Übertragungen ziemlich schnell zu beginnen - sagen wir mal ~ 200 MB / Sek. Verlangsamen Sie dann schnell auf ein vernünftiges Plateau von ~ 90-120 MB / s (möglicherweise nachdem Sie etwas Flash-Cache-Speicher auf den Laufwerken verbraucht haben). Nach 20 bis 30 Minuten beginnt die Operation allmählich auf ein viel niedrigeres Plateau (~ 30 bis 40 MB / s) abzusinken, was bei kleinen Dateien schlimmer ist - eine 4-5-stündige Operation dauert näher an 15 Stunden.
Ich habe einige Zeit damit verbracht, zu diagnostizieren - z. B. mögliche Laufwerksfehler. Obwohl ich verschiedene Tools ausprobiert habe - Befehlszeile, Nautilus -, konnte ich für sehr große Kopiervorgänge keinen angemessenen Durchsatz erzielen.
Für mich funktionierte es am besten, den Mitternachtsbefehlshaber zu verwenden, und wenn das Kopieren langsam wurde, unterbrach ich den Vorgang, bis die Festplattenanzeige erlosch, nachdem alle ausstehenden Vorgänge gelöscht wurden - normalerweise eine Minute oder so - und unterbrach dann MC erneut und es würde für weitere 20-30 Minuten auf ein anständiges Tempo zurückschießen. Ziemlich nervig.
quelle