Archive splitten und zusammenfügen

Aus LinuxUser 07/2001

Archive splitten und zusammenfügen

Passend gemacht

Dank günstiger Medien lassen sich CD-Brenner und ZIP-Laufwerke nicht nur zum leichten Transport von Daten sondern auch zur Archivierung und zum regelmäßigen Backup verwenden. Ist die Menge zu sichernder Daten größer als die Kapazität eines Datenträgers, helfen die Programme split und cat.

Ein kleines Home-Verzeichnis mit weniger als 650 bzw. 96 MB Daten lässt sich sehr einfach auf CD oder ZIP archivieren: Die notwendigen Befehle wären im Falle einer CD

mkisofs -o /tmp/backup.iso /home/user
 cdrecord -v dev=0,x,0 speed=4 /tmp/backup.iso

und im Falle eines ZIPs noch einfacher

mount /dev/zip /mnt/zip
 tar czf /mnt/zip/archiv.tgz /home/user

Doch was tun, wenn die zu sichernden Daten das Volumen eines einzelnen Datenträgers sprengen? Vorausgesetzt, auf der Festplatte ist genug freier Speicherplatz vorhanden, können Sie zunächst ein Archiv erzeugen und dieses mit einem klassischen Unix-Kommando in Teile zerlegen.

split

Nehmen wir an, Sie haben im ersten Schritt Ihr übergroßes Home-Verzeichnis zum Archiv /tmp/archiv.tgz zusammengefasst. Nun soll archiv.tgz in kleine Teile zerlegt werden, die auf einen Datenträger passen und später wieder zusammengesetzt werden können. Hierfür wird schon seit Jahren das Programm split verwendet. Ein Blick in die Manual-Seiten zu split (Abbildung 1) verrät, wie es geht: Um etwa ein Archiv der Größe 450 MB auf ZIPs zu kopieren, spalten wir die Datei in kleinere, 95 MB große Dateien.

Abbildung 1: Die man page zu split verrät die notwendigen Optionen

Abbildung 1: Die man page zu split verrät die notwendigen Optionen

# split -b 95m archiv.tgz archiv.tgz.split.

Es entstehen neue Dateien mit Namen archiv.tgz.split.aa, archiv.tgz.split.ab, archiv.tgz.split.ac usw. Anhand der aufsteigenden “Numerierung” aa, ab, ac, …, az, ba, bb, … lässt sich die Reihenfolge leicht feststellen. Alle so erstellten Dateien (mit Ausnahme der letzten) haben exakt die Größe von 95 MB bzw. 99614720 Bytes, wie eine Überprüfung mit ls -l ergibt (95 MB = 95 x 1024 x 1024 Bytes = 99614720 Bytes). Die Dateien können nun bequem auf einzelne Datenträger kopiert werden.

Rücksichern

Wird eine Rücksicherung des Backups notwendig, lässt sich das gesplittete Archiv genauso leicht zurück gewinnen: Legen Sie ein leeres Verzeichnis /tmp/restore an, kopieren alle *.split.*-Dateien in dieses Verzeichnis dort hinein und setzen das ursprüngliche Archiv mit dem Befehl

# cat archiv.tgz.split.* > archiv.tgz

wieder zusammen. Nun kann es normal mit tar entpackt oder mit einem grafischen Archiv-Tool durchsucht werden. Dass beim Zusammensetzen die richtige Reihenfolge beachtet wird, erledigt die Shell für Sie: Diese übergibt dem cat-Kommando bei dieser Art des Aufrufs alle gefundenen Dateien automatisch in alphabetischer Reihenfolge.

Verkettung

Unmittelbar nach Erzeugen und Splitten eines Archivs belegen Original und Teile den doppelten benötigten Speicher auf der Festplatte. Wenn hierfür nicht ausreichend Speicher vorhanden ist, können Sie die Ausgabe von tar über eine Pipe auch direkt in die Standard-Eingabe von split umleiten und so die Erstellung des tar-Archivs als Datei umgehen. Die notwendige Befehlssequenz dafür ist:

# tar cz /home/user | split -b95m - archiv.tgz.split.

Das funktioniert folgendermaßen: Da tar keine Option für die Ausgabedatei (“-f dateiname”) übergeben wurde, schreibt das Kommando das komprimierte (“-z”: gzip) Archiv auf die Standardausgabe. Diese wird über das Pipe-Zeichen “|” an den split-Befehl übergeben. Normal erwartet split die Angabe einer Eingabedatei sowie das Präfix (also den gemeinsamen Anfang der Namen) der Ausgabedateien. Hier wurde anstelle der Eingabedatei “-” angegeben, was split veranlasst, die Standard-Eingabe zu verwenden. Das Ergebnis ist identisch.

Auch das Entpacken ist später möglich, ohne die Dateien vorher zusammenzusetzen; der nötige Befehl ist dann

# cat archiv.tgz.split.* | tar xz

DOS/Windows

Wer sich im Ernstfall sein Linux-System zerschossen hat und nun schnell auf dem Windows-Rechner des Freundes oder Kollegen auf seine Daten zugreifen muss, wird sich fragen, wie unter DOS das zerteilte Archiv wieder zusammengesetzt werden kann. Hier kann der DOS-Befehl copy verwendet werden, um die Dateien wieder zusammenzubauen. Der Aufruf ist allerdings etwas umständlicher, da alle Dateien manuell aufgeführt und mit einem “+”-Zeichen verbunden werden müssen. Haben Sie etwa drei von split erzeugte Dateien archiv.tgz.split.aa bis archiv.tgz.split.ac, so geben Sie im DOS-Fenster den Befehl

copy /b archiv.tgz.split.aa+archiv.tgz.split.ab+archiv.tgz.split.ac archiv.tgz

ein, um das alte Archiv zurückzugewinnen. Das tgz-Archiv lässt sich nun zum Beispiel mit WinZip (a href=”http://www.winzip.com”>http://www.winzip.com) entpacken. Die langen Dateinamen funktionieren können übrigens wirklich nur im DOS-Fenster unter Windows verwendet werden; wenn Sie ein reines DOS ohne grafische Oberfläche starten, werden nur die typischen “8.3”-Dateinamen von DOS angezeigt.

Grafisch

Natürlich gibt es für split und cat auch ein grafisches Frontend: Unter GNOME können Sie einen Blick auf gfilesplit (http://freshmeat.net/redir/gfilesplit/3230/url_tgz/gfilesplit-0.2.tar.gz, auch auf der Heft-CD) werfen. Das Programm lässt sich (GNOME-Entwicklungsbibliotheken und Compiler-Umgebung vorausgesetzt) nach dem Entpacken des Quellpakets im Linux-typischen Dreischritt aus ./configure, make und make install übersetzen und installieren.

Abbildung 2: gfilesplit erspart Ihnen unter GNOME den manuellen Aufruf von split und cat

Abbildung 2: gfilesplit erspart Ihnen unter GNOME den manuellen Aufruf von split und cat

Voreingestellt ist bei diesem Tool die Größe 1440 KB, passend für eine 3,5″-Diskette (Abbildung 2). Dateien dieser Größe können allerdings nicht mit cp auf eine gemountete Diskette geschrieben werden, da das Dateisystem einer 1,44-MB-Diskette nicht genügend Platz für eine so große Datei bietet; stattdessen muss hier mit dem Befehl

# dd if=datei of=/dev/fd0

direkt auf die Diskette selbst geschrieben werden. Eine so voll ausgereizte Diskette lässt sich auch nicht mehr mounten sondern kann nur mit dem umgekehrten dd-Befehl zurückgelesen werden. Für echte Backups werden Sie Disketten wegen der geringen Kapazität aber ohnehin in den seltensten Fällen einsetzen. Um wie gehabt 95-MB-Stücke zu erstellen, geben Sie im Feld Split size einfach “95m” ein.

gfilesplit verwendet übrigens eine andere Notation, um die gesplitteten Dateien kenntlich zu machen; anstelle von “aa”, “ab” usw. wird hier dreistellig numerisch durchgezählt: “001”, “002” usw.

Ein weiteres Frontend für split haben wir übrigens bereits in den K-tools von Ausgabe 04/2001 vorgestellt: karchivers (http://perso.wanadoo.fr/coquelle/karchiveur_en.shtml) Hauptaufgabe ist zwar die Bearbeitung aller möglichen Archive (gzip, bzip2, tar, lharc, arj und rar), aber eines seiner Features ist auch das Splitten und Zusammensetzen von Dateien.

So weit unsere kurze Übersicht über die Möglichkeiten, große Datenbestände auf kleine Medien zu verteilen. Dies wird in vielen Fällen eine günstigere Lösung als der Kauf eines Streamers sein, immer vorausgesetzt, dass Ihr Rechner bereits mit einem CD-Brenner oder ZIP-Laufwerk ausgestattet ist.

LinuxUser 07/2001 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben