"Cut my file into pieces" - große Dateien aufteilen unter Linux
Etwas seltener als zur Diskettenzeit steht man heutzutage manchmal vor dem Problem, zu große Dateien aufteilen zu müssen. Sicherlich nicht mehr in 1,44MB-Häppchen, allerdings wächst mit schnelleren Übertragungsmöglichkeiten auch die zu übertragende Datenmenge.
Ich habe aktuell einen Snapshot einer VM im Internet erstellt und möchte diesen nun nach Hause übertragen. Allerdings bräuchte ich für die Übertragung mehr als einen Tag - was an sich nicht schlimm ist, allerdings kommt mir die Zwangstrennung durch meinen DSL-Provider in die Quere, die den Download letztendlich abbricht und dadurch nicht am Stück möglich macht. Ich muss also den Download in mehreren Schritten und an mehreren Tagen ausführen.
Unter Linux geht das Aufteilen einer Datei sehr einfach:
split -b 2G -d -a 3 kakarott.img kakarott.img_part_
-b beschreibt die Größe der Teile, hier: 2GB pro Split-Datei.
-d steht für --numeric-suffixes was soviel heißt wie: "Zähle hier bitte numerische Endungen hoch".
-a gibt die Anzahl der Zeichen für das Suffix an.
Das Ganze kann auch direkt mit dem Einpacken in ein Archiv verbunden werden, falls Platz gespart werden soll.
tar -cz kakarott.img | split -b 2G -d - kakarott.img.tgz_part_
-c schickt die Ausgabe direkt nach stdout und nicht in ein Archiv, denn wir wollen es ja danach noch mit split teilen.
-z erstellt uns ein gzip-Archiv
Zusammensetzen geht dann auch wieder simpelst:
cat kakarott.img_part_* > kakarott.img
oder aus dem Archiv:
cat kakarott.img.tgz_part_* | tar xvz