Ja ja, Datensicherung ist das halbe Leben.
Wo unter Windows Usern dieses Thema leider schon oft sehr stiefmütterlich behandelt wird,
ist es bei Linux Umsteigern schon oft in weite Ferne gerückt.
So viel neues, wer denkt da schon ans Daten sichern. Und wenn wie?
Fragt man Google wird man vermutlich oft über
dd stolpern, aber was ist das
und wie funktioniert das Ding? Komadozeile? - Häh.
Letztendlich ist
dd am Ende zwar gar nicht so kompliziert, aber oft leider auch nicht das richtige.
Was
dd macht ?
Mit
dd kann man eine Partition oder auch ganze Festplatte Sektor weise kopieren.
Dabei sind Daten Dateisystem usw. völlig egal. Letztendlich werden wirklich nur die Einsen und Nullen geschaufelt.
Damit läst sich natürlich ein Image erstellen. So ein Befehl könnte zB. so aussehen:
# dd if=/dev/hda1 of=/home/user/hda1-image.img
Damit hätte man ja schon mal sein Image der Partition, aber eventuell schwant einem vieleicht schon die Konsequenz so einer 1:1 Kopie.
Genau richtig. Würde man so zB. von einer 80GB Festplatte ein Abbild erstellen wollen, bräuchte man für dieses ebenfalls 80GB Platz (halt 1:1).
Bei kleinen Partitionen kann man also eventuell noch so arbeiten, bei größeren oder gar ganzen Festplatten wäre das nicht mehr tragbar. Ein RAID System wäre da sicherlich sinnvoller und würde im Falle des reinen Spiegelns sogar immer noch was für die Lese-Performence tun.
Also muß man das anders machen.
Das Zauberwort heißt Kompression.
Unter Linux gibt es zwei recht gebräuchliche Arten der Kompression und zwar gzip und bzip2.
Natürlich ließe sich auch zip oder ähnliches nehmen, da es aber keine Linux standart Programme sind, verzichte ich jetzt mal darauf. Das Ergebnis wäre auch nicht groß anders.
Also, das Image soll aus Platzgründen komprimiert werden.
Dann wollen wir mal.
# dd if=/dev/hda1 | gzip -9 > /home/user/hda1-image.img.gz
Damit würde man ein gzip komprimiertes Image erstellen.
Zur Erklährung:
Als erstes wird mit
dd if=/dev/hda1 der Inhalt Sektorweise von der ersten Partition der ersten Festplatte ausgelesen. Das
" | " Zeichen nennt sich Piep und sorgt dafür das das "Ergebnis" des ersten Befehls weiter verarbeitet wird. Das macht dann nämlich
gzip -9 wobei die Zahl den Kompressionsgrad angibt (-9 gleich maximale kompression).
Am Ende wird das Ganze über das
" > " Zeichen in die Datei
hda1-image.img.gz ins eigene Home Verzeichnis umgeleitet.
Der Befehl mit bzip2 würde ähnlich aussehen.
# dd if=/dev/hda1 | bzip2 > /hdc/image.img.bz2
Bzip2 liefert ein noch stärker komprimiertes Image, allerdings dauert der vorgang auch länger als bei gzip.
Eine mit bzip2 komprimierte 3GB Partition würde so auf ca 2GB kommen.
Aber es geht noch besser.
Die Sache ist nämlich die:
Eine Partition ist ja oft nicht randvoll. Vieleicht wird von den 3GB ja nur ein Bruchteil genutzt.
dd würda aber natürlich trotzdem
alles lesen und das kompressions werkzeug auch
alles komprimieren. Selbst die Bereiche in denen keine wirklichen Daten vorhanden sind.
Es wäre also ne tolle Sache, wenn der ganze Daten Müll und Fragmentstücke von alten Daten irgendwie nicht mit genommen werden müssten.
Das läst sich wie folg bewerkstelliegen:
# mount /dev/hda1
# cd /mnt/hda1
# dd if=/dev/zero of=zero.fil bs=1M
# sync
# rm zero.fil
# cd ..
# umount /dev/hda1
Als erstes wird die Partition gemountet.
Dann wird der leere / ungenutzte Bereich der Festplatte mit "Nullen" überschrieben.
Danach verläst man wieder das Verzeichnis und hängt dieses aus.
Dadurch das der leere / ungenutzte Bereich der Festplatte nur noch mit "Nullen" gefült ist, können die Kompressionswerkzeuge diesen Bereich hundert mal effektiver komprimieren.
Wenn auf unserer 3GB Partition zum Beispiel nur 200MB an wirklichen Daten lagen, dann wird mit diesem Kniff aus dem "normal" komprimierten Image von 2GB gerade mal ein 12MB großes Image. ( das hängt natürlich auch von der Art der Daten ab, die auf der Platte liegen).
Das lässt sich doch sehen.
Soweit zum Thema Image erstellen.
Manchmal braucht man aber auch kein komplettes Image, sonder ein einfaches Backup der Daten ansich würde schon reichen.
Und das geht so:
Kompressions Werkzeuge sind wieder gzip und bzip2 und um das ganze allerlei an Daten zusammen zu bekommen, nutzt man auch noch
tar.
# tar -cvzf /home/user/hda1-backup.tar.gz /mnt/hda1/*
oder mit bzip2
# tar -cvjf /home/user/hda1-backup.tar.bz2 /mnt/hda1/*
Was passiert:
tar -cvzf gibt tar mit einigen "Schaltern" Anweisungen.
Das
c steht für create, also erstellen. Das
v für verbose, damit gibt es eine Ausgabe an Informationen was tar gerade macht (kann auch weggelassen werden).
Das
z steht für gzip. Es wird also ein gzip komprimiertes tar Archiv erstellt.
Bei bzip2 ist dieser Schalter ein
jUnd zu guter letzt das
f. Diese sagt tar eigentlich nur das das Ziel kein Bandlaufwerk ist, denn tar wurde ursprünglich zur Sicherung von Daten auf Bandlaufwerken entwickelt.
Durch das ganze wird dann in die Backup Datei
hda1-backup.tar,gz im Home Verzeichnes, der Inhalt der Partition /mnt/hda1 geschrieben.
Eine Partition müsste natürlich vorher gemountet werden (siehe oben), aber man kann diese Metode des Backups auch auf biliebige Verzeichnisse Anwenden.
Zum Beispiel auf der Email Verzeichnis oder ähnlich.
Na dann, immer schön Daten sichern.
Und vieleicht hilft dieses kleine Tut ja dabei.