Gefällt dir dieser Artikel?

Linux: Dateien splitten und wieder zusammensetzen

erschienen in der Kategorie Software, am 21.09.2015
Schnatterente
Mich hat gerade jemand per Mail gefragt, ob ich weiß, wie man aus einem Clockworkmod-Backup einzelne Dateien extrahieren kann.
Das ist ganz einfach, führt aber unweigerlich zu einer anderen Fragestellung, nämlich:
Wie kann man unter Linux Dateien splitten und wieder zusammensetzen?
Ich will mich in diesem Artikel beiden Fragen widmen.

Ich beantworte natürlich die Frage zuerst, die mir gar keiner gestellt hat. ;-)

Wie man unter Linux Dateien splittet und wieder zusammensetzt

Manchmal sind Dateien einfach zu groß – sei es, weil sie die erlaubte Größe für E-Mail-Anhänge überschreiten, weil sie nicht auf einen einzelnen USB-Stick passen oder weil sie über vier Gigabyte groß sind und damit die erlaubte Dateigröße von FAT32-Dateisystemen überschreiten.

In solchen Fällen kann man die betreffende Datei mit dem Linux-Konsolentool split zerschneiden.
schnatterente@teich $ split -b 250MiB beispiel.bsp zerschnitten
schnatterente@teich $ ls -lh
      total 1.5G
      -rw-rw-r-- 1 schnatterente users 750M Jul 23 18:18 beispiel.bsp
      -rw-rw-r-- 1 schnatterente users 250M Jul 23 18:22 zerschnittenaa
      -rw-rw-r-- 1 schnatterente users 250M Jul 23 18:22 zerschnittenab
      -rw-rw-r-- 1 schnatterente users 250M Jul 23 18:22 zerschnittenac

Hier wurde die 750 Megabyte große Datei beispiel.bsp in drei 250 Megabyte große Teile zerhackt. Die entstandenen Dateien heißen zerschnittenaa, zerschnittenab und zerschnittenac. (Hätte ich den Ausgabenamen "zerschnitten" weggelassen, hätte sie split automatisch xaa, xab und xac genannt.)

Die Originaldatei könnte man nun löschen und die drei Teile getrennt verwahren oder in irgendeiner Art und Weise auf einen anderen Rechner übertragen.
Was auch immer man damit macht, irgendwann will man das Puzzle wieder zusammensetzen. Und das geht so:
schnatterente@nest $ cat zerschnitten* > zusammengesetzt.bsp


Das hier verwendete Kommando cat kennt so ziemlich jeder, der schon mal irgendetwas mit einer Linux-Konsole gemacht habt. Man kann es nutzen, um den Inhalt einer Datei auszugeben.
Das >-Zeichen sorgt dafür, dass die Ausgabe aber nicht auf dem Terminal erscheint, sondern in die angegebene Datei zusammengesetzt.bsp umgeleitet wird. Der Stern * bewirkt, dass Linux das mit jeder Datei macht, deren Name mit zerschnitten beginnt.

Man braucht also nur zwei kurze Befehle, um eine Datei unter Linux zu splitten und wieder zusammenzubauen.

Wurde die Datei verändert?

Wer gern überprüfen will, ob die Datei wirklich wieder korrekt zusammengesetzt wurde, der kann von der Originaldatei eine Hashsumme erstellen und diese in einer Textdatei mit aufheben. Hat man die zerstückelte Datei wieder zusammengesetzt, kann man für diese ebenfalls den Hashwert berechnen lassen, um diesen auf Gleichheit mit dem ursprünglichen Wert zu prüfen.
schnatterente@teich $ md5sum beispiel.bsp > hash.txt

schnatterente@nest $ cat hash.txt
      e5c834fbdaa6bfd8eac5eb9404eefdd4 beispiel.bsp
schnatterente@nest $ md5sum zusammengesetzt.bsp
      e5c834fbdaa6bfd8eac5eb9404eefdd4 zusammengesetzt.bsp

Da die alte Hashsumme mit der neuen Hashsumme übereinstimmt, kann man davon ausgehen, dass man es immer noch mit der gleichen, unveränderten Datei zu tun hat.

(Zu Anschauungszwecken habe ich hier die md5-Hashfunktion verwendet. Oft sind sha256 bzw. sha512 die bessere Wahl. Wer mehr über Hashsummen und deren Einsatz wissen möchte, kann auch diesen Artikel lesen, indem ich erkläre, wie man Passwörter sicher speichert.)

ClockworkMod: Backup entpacken

So, und nun kommen wir doch endlich mal zu der Problemstellung, die da per Mail rein kam:
"Wie kann man Dateien aus ClockworkMod-Backups entpacken?" Dieser Artikel wäre ein didaktischer Griff ins Klo, wenn die Beantwortung dieser Frage jetzt nicht irgendetwas mit den gerade gezeigten Sachen zu tun hätte. Glücklicherweise ist dem auch so.

ClockworkMod, meist als CWM abgekürzt, ist ein ROM-Manager für Smartphones. Man kann diese Software beispielsweise benutzen, um seinem Mobiltelefon eine neue Android-Version (Cyanogenmod o. ä.) zu verpassen. Außerdem stellt das Programm eine Möglichkeit bereit, um Backups der kompletten Handy-Software (also des Betriebssystems sowie aller installierten Apps und Einstellungen) anzulegen und diese später wieder herzustellen. Dazu verpackt die ClockworkMod alle relevanten Dateien in mehrere, gesplittete Tar-Archive.

Überträgt man diese Backups auf den PC, um sie dort zu entpacken, so scheitern die meisten Packprogramme daran, die Archive zu öffnen. Das liegt daran, dass die CWM die erstellten Tar-Archive in der oben gezeigten Art und Weise zerlegt.
schnatterente@teich $ ls -lh
      -rwxr----- 1 schnatterente users           0 4. Aug 19:59 system.ext4.tar
      -rwxr----- 1 schnatterente users 954M 4. Aug 20:00 system.ext4.tar.a
      -rwxr----- 1 schnatterente users 520M 4. Aug 20:00 system.ext4.tar.b

Die Backups bestehen immer aus einer null Byte großen (also leeren) Tar-Datei und Teilarchiven, welche den gleichen Namen tragen und alphabetisch sortiert sind.

Den Rest könnt ihr euch jetzt eigentlich schon selbst denken. Mit cat kann man das kaputte Tar wieder zusammenkleben:
schnatterente@teich $ cat system.ext4.tar* > system-komplett.ext4.tar

Und damit erhält man dann ein Archiv, mit dem so ziemlich jedes halbwegs gute Packprogramm zurechtkommt.


So, dass wär's dann erst mal dazu.
Ich bekomme immer wieder Feedback, dass ich mehr Linux-Grundlagenartikel schreiben soll. Ich hoffe, jemand hat beim Lesen was gelernt. :)
Grüße an Christian

Geschnatter

1 Kommentar, selbst mitschnattern << < Seite 1/1 > >>
cla, am 04.10.2015 um 18:09 Uhr
alles gut und schön..... allerdings kehrt der befehl "cat" den split nicht um - vereinfacht ausgedrückt schmeißt er nur die gesplitteten datein wieder zusammen - das wär' auch "zu fuß" möglich...
eine gesplittete rom bzw ein cwm-backup zu rekonstruieren ist nicht möglich........
lg cla