Wie kopiere ich schnell 900.000 Dateien?

9

Ich muss einige Daten, die 900.000 winzige Dateien mit einer Gesamtgröße von 30 Gigabyte enthalten, auf einen Windows-Computer kopieren. Es muss jedoch in weniger als anderthalb Stunden kopiert und eingerichtet werden können, und das Kopieren von einer USB-Festplatte kann mehr als 5 Stunden dauern, was hauptsächlich auf die verrückte Menge an Dateien zurückzuführen ist. Gibt es eine bessere / schnellere Möglichkeit, damit umzugehen, beispielsweise eine Art Blockkopieren? Vielen Dank

Joe Lyga
quelle
8
Dies wird ein sehr aggressives Ziel für jede dateibasierte Kopie einer einzelnen Nicht-SSD-Festplatte sein. Das Aufzählen aller Dateien und das Bearbeiten der Dateisystemeinträge und Metadaten für so viele Dateien nimmt viel Zeit in Anspruch.
Afrazier
5
Können Sie einfach die Festplatte entfernen und im Ziel platzieren? Dies wäre die schnellste Geschwindigkeit, die über die Motherboard-Rückwandplatine übertragen wird.
iTom
1
xkcd.com/949
user541686
Möchten Sie diese Frage als Blog sehen? Helfen Sie, indem Sie bei Meta antworten oder abstimmen .
Tamara Wijsman

Antworten:

7

Bei einer großen Anzahl von Dateien ist es am besten, ein Tar-Archiv zu erstellen, damit Sie weniger Dateien bearbeiten müssen. Wenn Sie eine externe USB 2.0-Festplatte verwenden, sollten Sie USB 3.0, eSATA oder ein schnelles lokales Netzwerk verwenden.

Was ist Ihr Quellbetriebssystem? Wenn beide Betriebssysteme Linux wären, könnten Sie die Dateien über tar, gzip und ssh an den Zielcomputer weiterleiten. Sie können cygwin unter Windows installieren, um diese Art von Funktionalität auch für Windows zu erhalten.

Update: Der Beitrag
" Verwenden von Tar und SSH zur Verbesserung der SCP-Geschwindigkeiten " beschreibt die Befehle, die zum Senden von Tar-Inhalten über ssh erforderlich sind.

dabest1
quelle
tar liest weiterhin alle Dateien einzeln.
Tomas Andrle
Ja, aber Sie würden es nur einmal tun und andere Befehle wie scp würden nicht durch den Umgang mit einzelnen Dateien verzögert. Wenn Dateien im Teerarchiv auf dem Zielcomputer gespeichert werden können, sparen Sie auch Zeit beim Schreiben einer Datei anstelle von vielen.
dabest1
Ich gehe davon aus, dass die USB-Verbindung der Engpass ist. Daher scheint es mir die beste Lösung zu sein, ein Rohbild des Laufwerks aufzunehmen, wie es @arcyqwerty vorschlägt. Ich wäre gespannt auf einige tatsächliche Ergebnisse, vielleicht irre ich mich völlig!
Tomas Andrle
1
@ TomA - Nach meiner Erfahrung im Umgang mit vielen kleinen Dateien ist die Festplatte der Engpass. Jeder gelesene Datei erfordert eine Kopfsuche zur Allocation-Bitmap und dann eine weitere Kopfsuche zum eigentlichen Dateiinhalt. Infolgedessen verbringt die Festplatte den größten Teil ihrer Zeit mit der Suche und sehr wenig Zeit mit dem tatsächlichen Lesen von Dateien.
Gefälschter Name
2
Bei 1K-Dateien erhalte ich beispielsweise ~ 1-5 MBit / s über mein Gigabit-LAN. Bei großen Dateien (jeweils Gigabyte) erhalte ich ~ 80-90 MBit / s. Es geht nur um die sequentiellen Lesevorgänge.
Gefälschter Name
8

Wenn die Festplatte von der USB-Schnittstelle auf SATA / ATA entfernt werden kann, würde ich sie auf dem Zielcomputer installieren. Sie erhalten viel schnellere Übertragungsgeschwindigkeiten, wie andere angemerkt haben. Zum Kopieren würde ich unter der Annahme, dass Sie unter Windows arbeiten, eine einfache ROBOCOPY durchführen. Es ist ungefähr so ​​schnell, wie Sie wirklich hoffen können, obwohl es andere Alternativen gibt.

ROBOCOPY /E /B /MT 'source' 'destination'

Ich würde versuchen, das Komprimieren all dieser Dateien zu vermeiden. Es besteht jedoch eine gute Chance, dass die Zeit zum Komprimieren und Verschieben das einfache Verschieben der Dateien übersteigt.

* Die Option / MT für Robocopy wurde hinzugefügt. In einer Umgebung mit mehreren Threads können Übertragungen erheblich beschleunigt werden.

Lee Harrison
quelle
Hilft es /MTbei lokalen Übertragungen einzelner Festplatten oder verursacht es massiven Festplatten-Thrashing? Es ist üblich, große Freigaben zwischen Servern zu kopieren, aber beide haben häufig eine zusätzliche Latenz, da sie über das Netzwerk gehen, und verbesserte IOPS von RAID-Arrays.
Afrazier
Ich kann diesen Aspekt nicht wirklich zu stark kommentieren. Ich verwende Robocopy, um jeden Abend alle meine VS-Projekte zu sichern, obwohl es nur etwa 10 GB wert ist. Es dauert nur wenige Augenblicke, da bereits vorhandene Dateien nicht kopiert werden. Ich habe diese Robocopy-Benchmarks vor einigen Monaten gefunden: demartek.com/Reports_Free/…
Lee Harrison
Wenn der USB-zu-SATA-Adapter in Ihrem Laufwerkgehäuse die native Befehlswarteschlange unterstützt, wird meiner Erfahrung nach der / MT-Switch erheblich verbessert.
Longneck
6

Sie können versuchen, ein Image des gesamten Ordners / Laufwerks aufzunehmen

Auf Linux-Systemen können Sie ddeine Rohkopie des Dateisystems abrufen und als einzelne große Datei kopieren.

Um das Image auf Windows zu extrahieren, müssen Sie möglicherweise cygwin oder ein Programm installieren, das Images verarbeiten ddkann.

Arcyqwerty
quelle
Das ist das Ticket.
Tomas Andrle
3

Installieren Sie die Festplatte, auf der sich die Quelldateien befinden, auf dem Computer, den Sie einrichten, und übertragen Sie die Festplatte auf die Festplatte. USB vergessen. Selbst die Übertragung über das Kabel (Netzwerk der Maschinen miteinander) wäre schneller als USB (vorausgesetzt, USB 2.0 und 1 Gbit / s NIC). Wenn dies ein wiederkehrendes Ereignis ist, prüfen Sie stattdessen die Replikation.

Paul Ackerman
quelle
3

Verwenden Sie rsyncmit zOption.

-z,         --compress              compress file data during the transfer
            --compress-level=NUM    explicitly set compression level
            --skip-compress=LIST    skip compressing files with suffix in LIST

Dies erhöht die Übertragungsgeschwindigkeit über das Netzwerk. Also höchstwahrscheinlich nicht nützlich in Ihrem Fall.

Nach einigem Lesen wurde mir klar, dass wir beim Kopieren von Daten von einer lokalen Festplatte auf eine andere nicht das Flag '-z' verwenden sollten, da dies den Overhead erhöht. Vielen Dank für einen Kommentar von @FakeName.

Sachin Divekar
quelle
1
rsync komprimiert nicht für lokale Übertragungen (oder über ein LAN, glaube ich). Dies hätte auch keinen Vorteil, da das eigentliche Problem die Zeit ist, die zum Lesen der Dateien benötigt wird, und nicht zum Senden über die Leitung (da für jede gelesene Datei mindestens zwei Suchvorgänge erforderlich sind).
Gefälschter Name
@FakeName +1 Sie haben Recht, nach einigem Lesen habe ich Ihren Standpunkt verstanden. Ich habe meine Antwort aktualisiert.
Sachin Divekar
1

Sie nähern sich schnell den Einschränkungen Ihrer Festplatte. Tatsächlich ist es bei aktuellen Standardlaufwerken unmöglich, Ihre Übertragungszeit mit einem Kopiervorgang pro Datei zu messen.

Angenommen, jede Datei benötigt 1 HD-Such- und Suchzeit beträgt 7 ms (was realistisch gesehen etwas idealisiert ist, erfordert jede Datei zwei Suchvorgänge, es sei denn, die Volume-Bitmap wird im RAM zwischengespeichert), verwalten Sie bestenfalls ~ 142 Dateien / Sek. ( \ $ \ frac {1000} {7} = 142,8 ... \ $).

Mit den OP-Spezifikationen (30 GB, 900.000 Dateien) sind das ~ 33 KB pro Datei (\ $ \ frac {30.000.000.000} {900.000} = ~ 33,3 ... \ $. 33 KB * 142 = 4,68 MBit / s.

Die Mindestzeit für die Übertragung von 30 GB mit 5 MBit / s beträgt ~ 1 Stunde und 40 Minuten (\ $ \ frac {30.000} {5} = = 6.000 \ $ Sekunden. \ $ \ Frac {6.000} {60} = 100 \ $ Minuten oder 1:40 Stunden)

Daher ist es unmöglich , eine Geschwindigkeit zu erreichen, die besser als ~ 5 MBPS ist, und das bei einem idealen Laufwerk (und weniger Suchvorgängen. Dies gilt für einen Suchvorgang pro Datei. Realistisch gesehen wären es zwei). Sie sind vollständig durch die Festplattenleistung eingeschränkt.


Die einzige Möglichkeit, die Leistung zu verbessern, besteht darin, das gesamte Dateisystem und die Partition nacheinander zu kopieren. ddkann dies unter Linux tun.

Was versuchst du zu machen?

Falscher Name
quelle
Funktioniert TeX für andere? Es scheint nicht für mich zu rendern.
Gefälschter Name
0

Versuchen Sie 7zip, die Dateien nur in einer Datei zu archivieren. Verwenden Sie nach Möglichkeit WLAN mit einer Ad-hoc-Verbindung zu einem Notebook.

ott--
quelle
1
oder noch besser, eine direkte Ethernet-Verbindung, vorzugsweise Gig-E
Journeyman Geek
0

Im Zusammenhang mit der Antwort von @arcyqwery können Sie sie möglicherweise komprimieren und gleichzeitig in eine große Datei umwandeln. Dies wird den Prozess etwas beschleunigen.

Es kann sich auch lohnen, ein Programm wie TeraCopy zu verwenden , da es normalerweise schneller ist als die standardmäßige Windows- Kopierleistung . Sie sollten in Ihrem Fall jedoch mit ähnlichen Umständen testen, um dies zu überprüfen.

Soandos
quelle
0

Ich hatte einen ähnlichen Fall. Ich habe Antivirus deaktiviert und die Kopiergeschwindigkeit von 3 MB / s auf 12 MB / s geändert.

Geben Sie hier die Bildbeschreibung ein

Rm558
quelle