Was ist die schnellste und zuverlässigste Methode, um eine 50-GB-Binärdatei in Blöcke von 5 GB oder weniger aufzuteilen und später wieder zusammenzusetzen?


26

Auf unseren Servern läuft Ubuntu Linux, und die Binärdatei ist ein BSON-Dump einer großen MongoDB-Sammlung. Wie zuverlässig ist ein Werkzeug split? Gibt es einen schnelleren oder besseren Weg, dies zu tun?

Antworten:


26

Um zu teilen, teilen Sie -b

Einfach mitmachen cat.

AFAIK sie sind absolut zuverlässig, und ich bezweifle, dass es etwas effizienteres gibt.


21

split ist sehr zuverlässig. Wir verwenden es zum Portieren großer Protokolldateien, und es funktionierte gut für bis zu ein paar GB (ohnehin nicht 50 GB).

Ich glaube, Sie können versuchen, die Aufteilung für Ihre Anforderung zu verwenden, und lassen Sie es uns wissen.

In 5 GB Dateien aufteilen

split --bytes = 5G Eingabedatei

Es wird in mehrere Dateien mit 5 GB aufgeteilt und als xaa, xab, xac usw. bezeichnet.

Verketten

cat x *> outfile

Auf diese Weise können Sie am anderen Ende als einzelne Datei verketten.


1
Unter OS XI musste split -b50m verwendet werden, um 50-Megabyte-Dateien zu erstellen. Beachten Sie kein Gleichheitszeichen, beachten Sie Kleinbuchstaben.
Funroll

3

Wenn Sie selten installiert haben, hat es für mich sehr gut funktioniert:

Zu trennen

rar a -m0 -v5000m newfilename giantfile.foo
  • a = Dateien zum Archiv hinzufügen
  • m0 = keine Kompression
  • v5000m = in 5000-Megabyte-Blöcke aufgeteilt

Zusammenbauen:

unrar x newfilename.*
  • x = extrahieren

Leistungen:

  • CRC zum Inhalt des geteilten Archivs,
  • Split-File-Reihenfolge wird automatisch beibehalten,
  • Es können mehrere Dateien und Verzeichnisse eingeschlossen werden.

3

split& catsind absolut zuverlässig. Sie können dies zusätzlich inline komprimieren. Angenommen, Ihre Eingabedatei lautet dump.bson:

gzip < dump.bson | split -b 32M - dump.bson.gz.

Und dann rekonstituieren Sie mit diesem:

cat dump.bson.gz.* | gunzip > dump.bson

Tipp, das funktioniert genauso gut mit xz(dec)anstelle vong(un)zip

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.