Schnellste Möglichkeit, eine große Anzahl von Dateien zu verschieben?


8

Ich muss ungefähr 320.000 Dateien, 80.000 Ordner (nur 100 GB) Daten verschieben. Einige Dateien haben eine Größe von> 1 GB, die meisten jedoch eine Größe von <1 KB.

Ich habe mir die schnellste Methode zum Kopieren von Dateien angesehen , bin mir aber nicht sicher, wie nützlich diese sein werden. Bei meinem Problem geht es nicht um reine Übertragungsratengeschwindigkeiten, sondern darum, wie schnell Windows mit der E / A von 320.000 Dateien umgehen kann.

Glaubst du, ich werde Geschwindigkeitsvorteile mit Xcopy, Robocopy, Teracopy oder Fastcopy sehen?

Wir haben lange gebraucht (12 Stunden +), um sie einmal zu kopieren (mit Robocopy), und ich hasse es, das noch einmal tun zu müssen. Was kann ich tun, um es zu beschleunigen?

Das Zeug befindet sich auf einem externen USB 2.0-Laufwerk.

Antworten:


9

So etwas wie Robocopy ist die beste Wahl. USB-Laufwerke können zunächst nicht viele E / A-Vorgänge verarbeiten.

Ich habe Millionen kleiner Dateien mithilfe von Robocopy auf und von USB-Laufwerken übertragen. Es braucht Zeit, aber es erledigt den Job.


3

Wie Mrdenny sagte, wäre Robocopy am besten, auch wegen seiner Robustheit. Der beste Rat, den ich geben kann, wenn Sie sich über die Sauberkeit der zu verschiebenden Dateien sicher sind, ist sicherzustellen, dass die Antivirensoftware während des Verschiebens deaktiviert ist. Sie möchten wirklich nicht, dass all diese Dateien gescannt werden.


1

Offensichtlich gibt es einen schnelleren Weg als alle hier genannten. Schneller, aber weniger flexibel :-) Wenn Sie die Dateien auf einer separaten Partition abgelegt haben, können Sie die gesamte Partition auf die Zieldiskette kopieren.

Ich kenne kein kostenloses Windows-Tool für diesen Job (ein Tool mit VSS-Unterstützung wäre perfekt), aber Sie können auf jeden Fall von einer Ghost-CD oder Partition Magic-CD oder einer eigenständigen Linux-CD booten. Unter Linux nur dddie Partition, oder ntfsclonewenn dies zufällig eine NTFS-Partition ist.


0

Wenn ich Sie wäre, würde ich die externe Festplatte gegen eine Firewire austauschen. Die Geschwindigkeitsübertragung ist viel schneller als bei USB2.

Ich denke, dass das Packen der Dateien in einen einzigen "Teer" und das anschließende Übertragen der Dateien möglicherweise etwas Zeit sparen würde. Weil es die E / A-Zeiten verkürzt, da Sie im Vergleich zu Tausenden von Dateien nur eine riesige Datei kopieren, verbraucht es meiner Meinung nach auch weniger Ressourcen (während der Kopierphase). Oder Sie können den Teerstream direkt auf Ihr USB-Laufwerk leiten.


Ja, ich weiß, dass der Single-Tar-Ansatz definitiv zu Ergebnissen führen wird, war mir jedoch nicht sicher, ob das Erstellen der Single-Datei viel Zeit in Anspruch nehmen würde.
trotz

Firewire ist gut, aber eSATA kann auch schneller sein.
Chopper3

0

Ich fand, dass der effizienteste Weg, eine große Anzahl von Dateien zu kopieren, darin bestand, sie zuerst in ISO-Dateien zu streamen und stattdessen die ISOs zu kopieren. Auf diese Weise wird die Festplatte nicht durch die Ausgabe von Tausenden von Befehlen betroffen, die zum Kopieren von Dateien erforderlich sind.

Dies hängt natürlich von Ihrer Verzeichnisstruktur ab. Ich hatte das Glück, dass in Abständen von 4,7 GB ein neues Verzeichnis erstellt wurde, sodass die Erstellung eines VBScript zur Automatisierung des Prozesses erheblich vereinfacht wurde.


Ich folge nicht deiner Logik. Um die ISO zu erstellen, müssen alle diese Dateien gelesen und in die ISO geschrieben werden. Anschließend wird die ISO gelesen, um die Dateien zu extrahieren und schließlich in das Ziel zu schreiben. Wie ist das effizienter als einmal zu lesen und zu schreiben?
John Gardeniers

Beispielcode in VBSCript, C # oder einer anderen Skriptsprache?
Kiquenet

@JohnGardeniers Lewis setzt darauf, dass die Zeit, die zum Kopieren kleiner Dateien über das Netzwerk benötigt wird, einen viel größeren Overhead hat als die Zeit, die benötigt wird, um sie in eine ISO einzufügen und diese Datei dann zu übertragen. Es hängt wirklich von Ihrer speziellen Umgebung ab, aber so unintuitiv es auch klingt, es kann schneller sein, eine konsolidierte Datei anstelle von Tausenden winziger Dateien zu übertragen.
So

0

Sie werden mit ziemlicher Sicherheit eine bessere Gesamtleistung für die Übertragungssequenz erzielen, wenn Sie zuerst die Quelldateien in ein einzelnes Archiv packen (tar oder in zip komprimiert usw.), dann das Archiv über das Netzwerk übertragen und das Archiv dann im entpacken Ziel.

Bitte vergessen Sie nicht, dass Sie beim Übertragen des Archivs über das Netzwerk besser FTP (oder ein anderes dateiorientiertes Übertragungsprotokoll) verwenden als eine einfache SMB-Dateikopie.

Mit einem Prozess wie dem oben genannten habe ich routinemäßig Anwendungsverzeichnisse von ca. 60 GB (mit ca. 50.000 bis 75.000 Dateien) zwischen mehreren geografisch getrennten Rechenzentren (USA, Europa, Asien) übertragen. Der Unterschied zwischen der Übertragung jeweils einer Datei und der Übertragung eines komprimierten Archivs über FTP ist 10-40-mal schneller.

Rsync kann auch hier Ihr Freund sein (wie in vielen anderen Dateiübertragungsszenarien).

Wenn Sie für kommerzielle Optionen offen sind, kann eine UDP-basierte binäre Streaming-Lösung, die Bits über mehrere UDP-Streams übertragen kann, für Sie von Wert sein. Werfen Sie einen Blick auf http://www.filecatalyst.com/


0

Eine andere Möglichkeit wäre, Bittorrent mit einem eingebauten Tracker oder eingeschaltetem DHT zu verwenden. Der Client würde alle Dateien in Blöcken zusammenfassen (verwenden Sie 2 MB oder mehr, falls verfügbar). Auf der Empfangsseite erhalten Sie Dateien in großen Blockblöcken, wenn sie auf die Festplatte geschrieben werden. Dies hilft, Ihre kleinen Dateien in 2-MB-Blöcken zu konsolidieren, und Sie erhalten bessere Übertragungsraten und

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.