decocode decocode deco    

partimage #

(Version 0.6.7 mit SystemRescueCD 1.1.0) symbol: image

Partimage ist ein Kommandozeilenprogramm mit einer semigrafischen Oberfläche, über das es möglich ist, Sicherungskopien (Backups) ausgewählter Partitionen auf physischen Laufwerken herzustellen. Es wird bei der zu sichernden Partition lediglich der durch Daten belegte Speicherplatz berücksichtigt, wodurch das Backup platzsparend erzeugt wird. Zusätzlich kann aus unterschiedlichen Kompressionsgraden gewählt werden, um die Backupdatei(en) noch kleiner zu machen. Die Imagedatei kann in mehrere kleinere Einzeldateien festgelegter Größe aufgeteilt werden, wodurch es möglich ist, das Backup z. B. auf mehrere CDs zu brennen.

Da während des Backup-Vorgangs keine Schreibvorgänge auf der betreffenden Partition erfolgen dürfen, es also nicht zu empfehlen ist, eine gegenwärtig aktive Partition zu sichern, kommen zwei Verfahren infrage:

1. Ausführen von Partimage über eine andere Partition, auf der Linux als Betriebssystem installiert ist
2. Ausführen von Partimage über eine Linux-Live-CD

An dieser Stelle wird ein Beispiel für die Option 2 beschrieben, bei der über eine LiveCD ein Image einer Festplattenpartition auf einem externen Laufwerk erstellt wird.

partimage unterstützt gegenwärtig keine Laufwerke, die mit dem Dateisystem ext4 formatiert wurden! Eine Alternative ist in diesem Fall z. B. Disk Dump.

Alternativen zur SystemRescueCd sind in diesem Zusammenhang z. B. Parted Magic oder Clonezilla.

Beschaffung der Live-CD #

Im Download-Bereich der Website von SystemRescueCd wählt man den Link für die verwendete Rechnerarchitektur (in der Regel x86) und lädt sich dort das CD-Image herunter, das man sich dann mit einem Brennprogramm auf einen CD-Rohling brennt. In diesem Fall ist das die Datei systemrescuecd-x86-1.1.0.iso. Auf dieser CD befindet sich eine abgespeckte Linux-Distribution mit einer Reihe von nützlichen Werkzeugen für die Systemanalyse und -rettung, unter anderem auch Partimage.

Vorbereitung der zu sichernden Partition #

Da es sich in meinem Fall bei dem auf der zu sichernden Partition befindlichen Betriebssystem um Windows XP handelt, muss die Partition erst defragmentiert werden, damit es bei der Image-Erstellung keine Probleme gibt. Linux-Partitionen müssen nicht defragmentiert werden.

Um die Partition zu defragmentieren, wählt man unter XP das Defragmentierungsprogramm über Start ► alle Programme ► Zubehör ► Systemprogramme ► Defragmentierung. Dort wählt man die gewünschte Partition aus und klickt auf Defragmentieren. Sollten einzelne Dateien auf diesem Wege nicht defragmentiert werden können, kann es unter Umständen hilfreich sein, die Defragmentierung mit einem besseren Programm wie z. B. Disk Optimizer durchzuführen. Im Zweifelsfall kann man widerspenstige Dateien eventuell auch einfach löschen und die Defragmentierung erneut ausführen lassen. Je weniger fragmentiert die Partition ist, umso eher gibt es keine Probleme mit Partimage.

Booten von der Live-CD #

Die externe Festplatte, auf der das Partitions-Image gespeichert werden soll, wird nun an den Rechner angeschlossen. Dann legt man die Live-CD ein und bootet den Rechner von dieser neu. Nun wird das Betriebssystem von der CD geladen. An der ersten Eingabeaufforderung kann man diese einfach durch Eingabe bestätigen.

Dann wird man nach der Tastaturbelegung (›keymap‹) gefragt. Für eine deutsche Tastatur gibt man dort die 10 ein und bestätigt mit Eingabe.

An der nächten Eingabeaufforderung kann man nun den Internetzugang konfigurieren. Dies ist unter Umständen sinnvoll, um Zugriff zu diversen Online-Dokumentationen der SystemRescueCD oder von Partimage zu erhalten. Dazu gibt man net-setup eth0 ein und beantwortet die folgenden Fragen.

Anschließend kann man nun mit dem Befehl wizard die grafische Oberfläche starten oder auch gleich mit dem Befehl partimage das Partitionsimage erstellen. Die zweite Variante ist allerdings nur für Experten zu empfehlen. Wir wählen daher zunächst die grafische Oberfläche. Es werden eine Reihe von Optionen angeboten, von denen wir einfach die erste wählen.

Daraufhin wird die grafische Oberfläche geladen, auf der bereits ein Terminalfenster geöffnet ist.

Ziellaufwerk einhängen #

Die externe Festplatte, auf der das Image gespeichert werden soll, muss nun zunächst in das aktive Dateisystem eingehängt (gemountet) werden. Dazu muss erst festgestellt werden, welchen Namen dieses Laufwerk besitzt. Über die Konsole werden mit folgendem Befehl alle verfügbaren Laufwerke und Partitionen angezeigt:

sudo fdisk -l

Wer eine grafische Oberfläche bevorzugt, gibt im offenen Terminalfenster den Befehl gparted ein, woraufhin sich der Partitionseditor öffnet. Das Programm scannt zunächst alle verfügbaren Laufwerke und zeigt dann die Aufteilung der PC-Festplatte an. Auf der rechten Seite der Symbolleiste des Programms wird diese Festplatte angezeigt (z. B. /dev/sda (186,31 GiB)). Weitere angeschlossene physische Festplatten können durch Klick auf diese Stelle ausgewählt werden. Auf diese Weise erfährt man nun den Namen der angeschlossenen externen Festplatte (in meinem Fall /dev/sdb). In der Übersicht der Partitionen der PC-Festplatte findet man anhand der Partitionsgröße und des Dateisystems ebenso den Namen der Partition, für die ein Image erstellt werden soll (in meinem Fall /dev/sda1). Der Partitionseditor kann nun wieder geschlossen werden.

Im Terminal gibt man nun folgende Zeile ein:

mount /dev/sdb1 /mnt/backup

Auf diese Weise wird die Partition Nr. 1 auf der Festplatte sdb an der Stelle /mnt/backup in das Dateisystem eingebunden. Sollte das Ziellaufwerk einen anderen Namen haben oder möchte man eine andere Partition dieses Laufwerks einbinden, muss man den Befehl entsprechend abändern. Für die zweite Partition einer Platte mit dem Namen hdb wäre das dann z. B.:

mount /dev/hdb2 /mnt/backup

Partimage verwenden #

Auch wenn es nun möglich ist, die semigrafische Oberfläche von Partimage über den Befehl partimage im Terminal zu starten, halte ich die Kommandozeilenvariante für schneller.

Hier zunächst die Ausgabe von partimage -h mit der Beschreibung der möglichen Optionen dieses Befehls:

Quelltext auswählen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Partition Image (http://www.partimage.org/) version 0.6.7 [stable]
---- distributed under the GPL 2 license (GNU General Public License) ----

Supported file systems: Ext2/3, ReiserFS, FAT16/32, HPFS, JFS, XFS,
                        UFS(beta), HFS(beta), NTFS(experimental)

usage: partimage [options] <action> <device> <image_file>
       partimage <imginfo/restmbr> <image_file>

ex: partimage -z1 -o -d save /dev/hda12 /mnt/backup/redhat-6.2.partimg.gz
ex: partimage restore /dev/hda13 /mnt/backup/suse-6.4.partimg
ex: partimage restmbr /mnt/backup/debian-potato-2.2.partimg.bz2
ex: partimage -z1 -om save /dev/hda9 /mnt/backup/win95-osr2.partimg.gz
ex: partimage imginfo /mnt/backup/debian-potato-2.2.partimg.bz2
ex: partimage -a/dev/hda6#/mnt/partimg#vfat -V1440 save /dev/hda12 /mnt/partimg/redhat-6.2.partimg.gz

Arguments:
* <action>:
  - save: save the partition datas in an image file
  - restore: restore the partition from an image file
  - restmbr: restore a MBR of the image file to an hard disk
  - imginfo: show informations about the image file
* <device>: partition to save/restore (example: /dev/hda1)
* <image_file>: file where data will be read/written. Can be very big.
                For restore, <image_file> can have the value 'stdin'. This allows
                for providing image files through a pipe.

Options:
* -z,  --compress      (image file compression level):
  -z0, --compress=0    don't compress: very fast but very big image file
  -z1, --compress=1    compress using gzip: fast and small image file (default)
  -z2, --compress=2    (compress using bzip2: very slow and very small image file):
* -c,  --nocheck       don't check the partition before saving
* -o,  --overwrite     overwrite the existing image file without confirmation
* -d,  --nodesc        don't ask any description for the image file
* -V,  --volume        (split image into multiple volumes files)
  -VX, --volume=X      create volumes with a size of X MB
* -w,  --waitvol       wait for a confirmation after each volume change
* -e,  --erase         erase empty blocks on restore with zero bytes
* -m,  --allowmnt      don't fail if the partition is mounted. Dangerous !
* -M,  --nombr         don't create a backup of the MBR (Mast Boot Record) in the image file
* -h,  --help          show help
* -v,  --version       show version
* -i,  --compilinfo    show compilation options used
* -f,  --finish        (action to do if finished successfully):
  -f0, --finish=0      wait: don't make anything
  -f1, --finish=1      halt (power off) the computer
  -f2, --finish=2      reboot (restart the computer):
  -f3, --finish=3      quit
* -b,  --batch         batch mode: the GUI won't wait for an user action
* -BX, --fully-batch=X batch mode without GUI, X is a challenge response string
* -y,  --nosync        don't synchronize the disks at the end of the operation (dangerous)
* -sX, --server=X      give partimaged server's ip address
* -pX, --port=X        give partimaged server's listening port
* -g,  --debug=X       set the debug level to X (default: 1):
* -n,  --nossl         disable SSL in network mode
* -S,  --simulate      simulation of restoration mode
* -aX, --automnt=X     automatic mount with X options. Read the doc for more details
* -UX  --username=X    username to authenticate to server
* -PX  --password=X    password for authentication of user to server

Für das Erstellen einer Imagedatei mit Partimage ist die elementare Syntax diese:

partimage save <Quelle> <Ziel>

In meinem Fall ist die Quelle (wie oben ermittelt) /dev/sda1 und das Ziel eine Datei im Einhängepunkt der externen Festplatte, nämlich /mnt/backup/backup.gz. Der Dateiname (hier backup.gz) ist beliebig, doch sollte die Dateiendung mit der Kompressionsvariante übereinstimmen. Da ich mich für gzip entscheide, ist die Endung entsprechend gz.

Nun kann man ggf. diverse Optionen hinzufügen. In meinem Fall sind das folgende:

-z1 - Kompression mit gzip (kann weggelassen werden, da es die Standardkompression ist)
-d  - Keine Abfrage für eine Beschreibung des Images
-b  - Ausführen des Befehls ohne Angaben über die Benutzeroberfläche

Daraus ergibt sich folgender Befehl:

partimage -z1 -d -b save /dev/sda1 /mnt/backup/backup.gz

Diesen Befehl gibt man nun im Terminal ein, woraufhin das Image auf dem Ziellaufwerk erstellt wird. Nun muss man lediglich warten, bis das Image fertig ist. Danach kann man das Terminalfenster wieder schließen und die Live-CD herunterfahren. Dazu klickt man rechts unten im Desktop auf das CD-Symbol und wählt Exit > Return to console. Es erscheint wieder die Konsolenansicht, und durch Strg+Alt+Entf wird der Rechner neu gestartet.

Möchte man die Imagedatei(en) überprüfen, kann man im Terminal mc eingeben, woraufhin der Midnight Commander gestartet wird, ein einfacher Dateimanager. Im rechten Bereich klickt man auf /mnt und dann auf /backup, wodurch der Inhalt des Verzeichnisses /mnt/backup angezeigt wird. Dort sollte(n) sich nun die Imagedatei(en) befinden. Den Imagedateien wird entsprechend der Reihenfolge der Stückelung eine dreistellige Zahl (000, 001, etc.) angehängt.

Standardmäßig wird das Image in Einzeldateien von 2 GB Größe aufgeteilt, eine andere Aufteilung kann mit der Option -V erreicht werden, z. B. -V700 für Einzeldateien von 700 MB Größe.

Die gzip-Kompression hat im Beispiel eine Kompression auf ca. 70 % der Ausgangsgröße bewirkt.

Image zurücksichern #

Die Zielpartition muss mindestens so groß sein wie jene, von der das Image ursprünglich erstellt wurde (auch wenn die im Image enthaltenen Daten weniger Speicher beanspruchen). Soll die Zielpartition kleiner sein, so muss das Image erst auf eine ausreichend große Partition zurückgesichert werden, die anschließend mit einem Partitionierungseditor (z. B. GParted) verkleinert wird.

Vor dem Zurücksichern muss die Zielpartition erst ausgehängt werden:

sudo umount /dev/sda1

Zum Wiederherstellen einer Partition aus der Imagedatei benötigt man die Option restore unter Angabe des Zieles und der Quelle der Imagedatei:

sudo partimage restore /dev/sda1 /mnt/backup/backup.gz.000

Anschließend kann man die Zielpartition wieder mounten:

sudo mount /dev/sda1