Back to Our Home

Dokumentation

Einführung:

zsplit und unzsplit sind Kommondozeilen basierende Programme für Linux, welche ähnlich wie die bekannte Software von Symantec Norton Ghost™ oder Acronis True Image™ arbeiten, diese ermöglichen ihnen exakte Kopien ihrer Festplatte für Systemsicherungen oder Vorlagen (Image) für die Verteilung auf mehreren Computern zu erstellen. Die Programme zsplit und unzsplit stehen frei zum Download bzw. zur Verteilung. zsplit und unzsplit stehen unter der GNU GPL2 Lizenz.

zsplit und unzsplit benutzen die zlib Programmbibliothek, um Funktionen wie direkte Komprimierung und Dekomprimierung im Speicher der Daten, Integritätprüfung der dekomprimierten Daten, zu realisieren. Vielen Dank an die Authoren Jean-loup Gailly (Kompression) und Mark Adler (Dekompression) für die zlib Programmbibliothek und die Genehmigung/Lizenz zur Weiterverwendung der zlib Programmbibliothek.

Funktions Übersicht:

Für eine detaillierte Funktionsübersicht der verschiedenen Optionen schauen sie sich bitte die Hilfedokumentation für zsplit und unzsplit an. Wir möchten ihnen hier einige Problemfälle und Lösungsansätze zur Sicherung/Wiederherstellung eines Systems in Kombination mit den Programmen zsplit und unzsplit vorstellen.


Lokale Nutzung:

Situation 1: Im Computer haben wir eine bootfähige Systempartition ( hda) und zsplit installiert. Des Weiteren haben wir eine zweite Festplatte in Benutzung (hdb) mit einem anderen Betriebssystem (z.B.: WinXP). Auf Festplatte (hda) ist noch genügend Platz frei ca. die Größe von (hdb). Wir wollen eine komplette Sicherungskopie unserer Festplatte (hdb) erstellen, welche wir später evtl. auf DVD oder einen anderen Datenträger sichern können.

Nehmen wir an, wir booten von Festplatte (hda) und erstellen eine Sicherungskopie von (hdb), dafür muss folgender Befehel eingegeben werden:

zsplit -s 4.5G -N WinXP_backup -d /dev/hdb

Das war alles! Die Sicherungskopie von (hdb) "WinXP_backup" wird mit normaler Kompressionsrate in mehrere 4,5GB große Dateien geteilt (z.B WinXP_backup_0.spl.zp, WinXP_backup_1.spl.zp, WinXP_backup_2.spl.zp ...) und im aktuellen Verzeichnis gespeichert. Jede Datei würde jetzt exakt auf eine DVD zur Archivierung passen. Mit der Option -d können sog. Debug Dateien im Sicherungsverzeichis erstellt werden. In den Debug Dateien stehen Informationen zur Zeit und Größe der erstellten Sicherungskopien. Möchten sie die Sicherungskopie von Festplatte (hdb) gerne in ein anderes Verzeichnis speichern? Dann benutzen sie bitte folgenden Befehl:

zsplit -s 4.5G -N WinXP_backup -o /some/other/dir -d /dev/hdb

Bite merken: Wenn eine Festplatte beschädigt ist, oder z.B eine NTFS Partition zu stark fragmentiert ist, kann es sein das zsplit mit einem I/O Lesefehler abbricht. Die sog. I/O Lesefehler können bei zsplit mit der Option -r (--noerror) umgangen werden. Diese Option lässt zsplit einen speziellen Lesemodus ausführen, so dass fehlerhafte Bereiche übersprungen werden und die intakten Bereiche sauber gelesen werden. Es ist sinnvoll nach einer Wiederherstellung einer solchen Sicherungskopie, Systemprogramme wie "scandisk" (FAT16-FAT32) "chkdsk" (NTFS) "fsck.xxx" (ext,swap,reiserfs) auszuführen.

Folgender Befehl enthält die Option --noerror:

zsplit -s 4.5G -N WinXP_backup -o /some/other/dir -d -r /dev/hdb

Um die komplette Festplatte (hdb) wieder herzustellen benötigen wir unzsplit auf unserem System. Um die Wiederherstellung zu beginnen, müssen die geteilten Sicherungskopien (*.spl.zp Dateien) im selben Verzeichnis liegen (z.B /mnt/images), erst dann kann es losgehen! Wenn unzsplit im Verzeichnis /mnt/images gestartet wird, muss folgender Befehl ausgeführt werden, um die Wiederherstellung zu starten:

unzsplit -D /dev/hdb -d WinXP_backup

Wenn unzsplit in einem anderen Verzeichnis gestartet wird, müssen wir dem Programm mitteilen wo die Sicherungskopien befinden. Mit der Option --indir oder -i geben wir das Verzeichnis an in dem die geteilte Sicherungskopie liegt. Dann benutzen wir folgende Kommandozeile:

unzsplit -D /dev/hdb -i /mnt/images -d WinXP_backup

unzsplit findet, basierend auf dem vorgegebenen Namensteil "WinXP_backup" aller zur Sicherungskopie gehörigen Dateien im aktuellen (oder durch Option -i angegebenen) Verzeichnis. Danach wird die richtige Lesereihenfolge der Dateien festgelegt, sie werden entpackt, zusammengeführt und, schließlich, wird die Festplatte /dev/hdb wiederhergestellt. Alle Zeit- und Größeninformationen werden in der Datei debug.log abgelegt, die sich im aktuellen Verzeichnis befindet.

Situation 2: Wir möchten ein komplettes (bootfähiges) System sichern (z.B /dev/hda). Bitte merken, es spielt absolut keine Rolle welches Betriebssystem auf dieser Festplatte/Partition installiert ist.
Was wir in dieser Situation benötigen, ist eine Festplatte mit akkurater Größe (z.B /dev/hdb), eine bootfähige Linux Distribution auf CD wie DeviceImage-LiveCD und das un-/zsplit Programm. Sie können natürlich andere bootfähige Linux CD's wie (LiveCD-Knoppix,-Gnoppix, -Gentoo) benutzen, allerdings sind die Programme un-/zsplit in diesen Distributionen in der Regel nicht enthalten. Diese müssen ggf. im Vorfeld von http://www.device-image.de/download gedownloadet und entweder auf einer CD oder im Netzwerk zu Verfügung gestellt werden. Nachdem Sie die DeviceImage-LiveCD gebootet haben, folgende Schritte sind dazu nötig:

Um eine Sicherungskopie unserer Festplatte (/dev/hda) zu erstellen, müssen wir, wenn nicht schon vorhanden, eine Partition auf der Festplatte erstellen auf der wir die Sicherungskopie speichern möchten (/dev/hdb1) und diese Partition mit einem Dateisystem formatieren (z.B reiserfs, ext2, ext3 ...). Die Partition, (z.B /dev/hdb1) auf der wir die Sicherungskopie unserer Festplatte (/dev/hda) speichern wollen, muss nun in ein Verzeichnis gemountet werden (z.B mount -t <fstype> /dev/hdb1 /mnt/myimagedir). In diesem Verzeichnis wird nun die Sicherungskopie abgelegt.

Auszuführende Schritte zu oben beschrieben Fall:

  1. Booten eines GNU Linux System z.B Knoppix, Gentoo (x86, x86_64)
  2. mount -t reiserfs /dev/hdb1 /mnt/myimagedir, die Partition (/dev/hdb1) wird in das angegebene Verzeichnis (/mnt/myimagedir) gemountet.

Nun führen wir folgenden Befehl aus um die Festplatte bzw. unser System (/dev/hda) auf die Partition (/dev/hdb1) zu sichern:

Um Backup als aufgeteilte Image-Teile für weitere Aufbewahrung auf CDs zu bekommen:

zsplit -s 700M -N MY_XPSYSTEM -o /mnt/myimagedir -d /dev/hda

zsplit startet den Sicherungsvorgang für unsere Systemfestplatte (/dev/hda)
und legt das Image auf die Partition (/dev/hdb1) ab. Dabei wird das Image auf mehrere Dateien aufgeteilt (Dateigröße 700 MB).

Um Backup als eine große Datei zu bekommen:

zsplit -N MY_XPSYSTEM -o /mnt/myimagedir -d /dev/hda

Möchten wir nun das System mit Sicherungskopie wiederherstellen sind folgende Schritte nötig:

  1. Booten eines GNU Linux System: DeviceImage-LiveCD (oder Knoppix, Gentoo...)
  2. mount -t reiserfs /dev/hdb1 /mnt/myimagedir, die Partition (/dev/hdb1) wird in das angegebene Verzeichnis (/mnt/myimagedir) gemountet. Diese Partition enthält wie oben beschrieben die Sicherungskopie unserer Systemfestplatte (/dev/hda).

Als nächstes führen wir folgenden Befehl aus:

unzsplit -D /dev/hda -i /mnt/myimagedir -d MY_XPSYSTEM

Nun werden die Image-Teile (MY_XPSYSTEM_0.spl.zp, MY_XPSYSTEM_1.spl.zp, ...) eingelesen und zurück auf die Zielfestplatte (/dev/hda) geschrieben. Zeitgleich im aktuellen Verzeichnis wird eine Debug-Logdatei angelegt, in der Wiederherstellungszeit, Dauer, Ort und Größe notiert sind.

Fertig! War doch nicht so schwer oder?!

Datensicherung über ein Netzwerk:

Situation 1: Nehmen wir an, dass Sie eine Sicherungskopie von einer Systeminstallation machen möchten und keine Möglichkeit haben die Sicherungskopie wie im vorhergehenden Beispiel zu speichern (zweite Festplatte). Nun, sie verfügen aber über einen zweiten Computer und es besteht eine Netzwerkverbindung zwischen beiden Computern? Mit Hilfe von netcat und dd kann zsplit die Arbeit erledigen und die Sicherungskopie von einem Punkt zum anderen Punkt über das Netzwerk übertragen. Das folgende Szenario kann so leicht gelöst werden:

Die Sicherungskopie von Computer A und dessen Festplatte (/dev/hda) soll über das Netzwerk auf einem Gerät (/dev/hda) von Computer B gespeichert werden. Wir booten nun Computer A mit einer DeviceImage-LiveCD oder das schon installierte Linuxsystem. Im Idealfall ist auf Computer B ein lauffähiges Linuxsystem installiert, wenn nicht, müssen wir Computer B auch mit einer DeviceImage-LiveCD booten. Nachdem nun beide Computer gebootet wurden und laufen, müssen wir noch die IP Adresse von Computer A und B notieren (mit ifconfig sehen sie welche IP Adresse der Netzwerkkarte, oft eth0, zugewiesen wurde), sollte keine IP Adresse vergeben sein, müssen sie manuell eine IP Adresse auf Computer A und B vergeben (vorausgesetzt ihre Netzwerkkarte wurde richtig erkannt). Um eine IP Adresse der Netzwerkkarte (eth0) zuzuweisen, ist der Befehl ifconfig auszuführen (evtl. auf Computer A und B). Wenn sie ein DHCP Server oder Router mit DHCP Funktion besitzen können sie manuell IP Adressenzuweisung überspringen.

Konfiguration einer IP Adresse:
Bitte führen Sie auf Computer A folgenden befehl aus: ifconfig eth0 192.168.0.1 und auf Computer B: ifconfig eth0 192.168.0.2

Nun müssen wir, wenn nicht schon vorhanden, eine Partition auf der Festplatte (Computer B) erstellen und diese Partition mit einem Dateisystem formatieren (z.B reiserfs, ext2 oder ext3 ...), auf der wir die Sicherungskopie speichern möchten (/dev/hda2) . Die Partition, (z.B /dev/hda2) auf der wir die Sicherungskopie speichern wollen, muss nun in ein Verzeichnis gemountet werden (z.B mount -t <fstype> /dev/hda2 /mnt/sicherungskopie/). In diesen Verzeichnis wird nun die Sicherungskopie abgelegt.

Für den oben beschriebenen Fall sind nun weitere Schritte notwendig:

1: Auf dem Computer B bitte folgenden Befehl ausführen:

nc -l -p 9000 | zsplit -s 4.5G -N Linx_bkp -d -

Dieser Befehl setzt netcat in den Listenermode (zuhören, abfassen), dieser Mode sieht ob Daten am Port 9000 eintreffen und leitet diese Daten weiter an zsplit. An dieser Stelle verrichtet zsplit seinen Job. zsplit liest alle eingehenden Daten von stdin, komprimiert diese Daten mit der Standardkompressionsrate und teilt die Sicherungskopie in 4.5 GB große Teile und speichert sie im aktuellen Verzeichnis. zsplit legt auch eine debug.log Datei im aktuellen Verzeichnis mit Zeit- und Größeninformationen ab.

2: Auf dem Computer A bitte folgenden Befehl ausführen:

dd if=/dev/hda bs=1024 | nc 192.168.0.2 9000

Mit diesem Befehl wird ein Datenstrom über das Netzwerk zu der IP 192.168.0.2 an Port 9000 (Computer B) initialisiert. Dort werden dann die Daten von Computer A am Port 9000 von netcat abgegriffen und an zsplit weitergeleitet (wie oben beschrieben). Abhängig vom Datendurchsatz (10MBit, 100MBit, 1000MBit - half duplex, duplex) des Netzwerks kann dieser Vorgang etwas Zeit in Anspruch nehmen, da die Daten unkomprimiert über das Netzwerk gesendet werden. Dies kann ggf. abhängig von der Verbindungsgeschwingkeit zu einer niedrigen Datentransferleistung führen. Das Resultat, die komprimierte, geteilte Sicherungskopie der Festplatte (/dev/hda) von Computer A, ist dann auf Computer B (192.168.0.2) zu sehen. Diese Methode hat Vor- und Nachteile.

Pro:

Kontra:

Bevorzugen sie jedoch eine schnellere Methode, müssen die Befehle etwas modifiziert werden.
Dazu folgt hier nun ein Beispiel.

 

1. Am Computer B (IP 192.168.0.2) bitte folgenden Befehl ausführen:

 

nc -l -p 9000 | dd of=Linx_bkp_0.spl.zp bs=1024

Dieser Befehl greift die Daten, die über das Netzwerk am Port 9000 ankommen ab und gibt diese an dd weiter, welches dann die Sicherungskopie auf Computer B im aktuellen Verzeichnis ablegt. Wichtig! unzsplit richtet sich nach einer bestimmten Namenskonvention, egal wie viele Teile erstellt werden sollen. Eine Datei mit dem Namenszusatz "_0.spl.zp" muss immer vorhanden sein, bitte lesen Sie dazu die Dokumentation für unzsplit.

2. Am Computer A bitte folgenden Befehl ausführen:

zsplit -c -d /dev/hda | nc 192.168.0.2 9000

Hier werden die Daten direkt mit zsplit von (/dev/hda) gelesen und komprimiert. Das Programm netcat sorgt nun dafür, dass die Daten in das Netzwerk weiter geleitet werden zu Computer B. Auf Computer B wiederum abgegriffen (siehe oben).

Pro:

Kontra:

Systemwiederherstellung über ein Netzwerk:

Nehmen wir an auf Computer A wurde die Festplatte getauscht weil ein Defekt vorlag, nun soll die (vorhin) erstellte Sicherungskopie die auf Computer B vorliegt wieder zurückgeschrieben werden.

Der Anfang dieses Verfahrens bis zu dem Punkt der IP-Adresseermittlung beider Computer ist in dem Teil "Datensicherung über ein Netzwerk, Situation 1" beschrieben. Ausgehend vom vorhergehenden Punkt 1 wo wir die Sicherungskopie erstellt haben, liegt die Sicherungskopie Linx_bkp und deren Teile auf Computer B im Verzeichnis /mnt/sicherungskopie/. Gehen wir nun davon aus das alles läuft, müssen nun folgende weiterführenden Schritte ausgeführt werden:

1: Am Computer A führen sie bitte folgenden Befehl aus:

nc -l -p 9000 | dd of=/dev/hda bs=1024

Hier sucht das Programm netcat ob Daten an Port 9000 auf Computer A ankommen und spielt diese mit dd wieder auf die Festplatte (/dev/hda).

2: Am Computer B, in das Verzeichnis /mnt/sicherungkopie/ wechseln in dem die Sicherungskopie (ggf. deren Teile) liegen und führen sie bitte folgenden Befehl aus:

unzsplit -c -d Linx_bkp | nc 192.168.0.1 9000

Dieser Befehl führt unzsplit aus, welches sich dann die entsprechenden Teile der Sicherungskopie Linx_bkp sucht und zusammenführt. Die Daten werden an netcat weitergereicht und über das Netzwerk an Computer A Port 9000 geleitet. Auf Computer A werden die Daten direkt auf die Festplatte geschrieben. Option -d veranlasst unzsplit eine debug.log Datei im aktuellen Verzeichnis (/mnt/sicherungkopie/) mit Zeit- und Größeninformationen abzulegen.

Situation 2: Wenn Sie die Daten bzw. Systeminstallation von Computer A direkt auf einen (oder mehrere) anderen Computer (z.B Computer B) verbreiten (klonen) möchten, müssen folgende weiterführende Schritte ausgeführt werden:

Bitte beachten, beide Computer werden von einer DeviceImage-LiveCD (oder Knoppix, Gentoo... etc.) gestartet. Danach werden die IP Adressen ermittelt oder zugewiesen, wie oben in den Beispielen schon beschrieben wurde. Angenommen der Computer A hat die IP Adresse 192.168.0.1 und Computer B hat die IP Adresse 192.168.0.2. Die Sicherungskopie wird von Computer A auf Computer B geschrieben. Bitte unbedingt darauf achten! Die Größe der Festplatte auf der Computer B muss gleich groß oder größer sein als die Festplatte auf der Maschine A.

Folgende 2 weiterführende Schritte müssen ausgeführt werden:

1: Auf dem Computer B bitte folgenden Befehl ausführen:

nc -l -p 9000 | unzsplit -D /dev/hda -d -

Hier sucht das Programm netcat ob Daten an Port 9000 auf Computer A ankommen und gibt sie weiter über stdin an unzsplit. Durch unzsplit werden die Daten eingelesen, dekomprimiert und zurück auf die Zielfestplatte (/dev/hda) geschrieben. Zeitgleich im aktuellen Verzeichnis wird eine Debug-Logdatei angelegt, in der Wiederherstellungszeit, Dauer, Ort und Größe notiert sind.

2: Auf dem Computer A bitte folgenden Befehl ausführen:

zsplit -c -d /dev/hda | nc 192.168.0.2 9000

In diesen Schritt wird die Systeminstallation von der Festplatte (/dev/hda, Computer A) mit zsplit eingelesen, komprimiert und über das Netzwerk an Computer B gesendet.

Copyright(C) 2005 - 2007 DeviceImage-Project

Contact Us

07.07.2007: DeviceImage software goes commercial. Please see here for details.

28.11.2006: Broadening multilanguage option of the homepage. Italian translation has been added. Thank you very much Gianfranco!

14.03.2006: Added mini-HowTo your feedback is very appreciated

27.09.2005: Broadening a multilanguage homepage, Spanish translation has been added, thank you very much Jose!

05.06.2005: zspli/unzsplit version 1.2.0 has been released, please see release notes. Also DeviceImage-LiveCD is now available.

08.04.2005: started multilanguage version of DeviceImage homepage + Forum.

06.03.2005: zsplit/unzsplit version 1.0.1 has been released, please see release notes.