[linux-l] Festplatte mit dd kopieren

Volker Grabsch vog at notjusthosting.com
Mo Aug 13 11:36:01 CEST 2007


On Mon, Aug 13, 2007 at 02:05:01PM +1000, Peter Ross wrote:
> 
> On Mon, 13 Aug 2007, olafBuddenhagen at gmx.net wrote:
> 
> >    cp --sparse=always /dev/<partition> image
[...]
> dd if=/dev/<partition> | gzip > image
> 
> macht's klein (Nullen lassen sich gut komprimieren).

Peter, ich fürchte, du hast Olafs Ansatz nicht verstanden. Dein
Vorschlag ist äquivalent zu meinem Vorschlag.

Olaf hingegen schlägt "cp --sparse" vor, das ist ne ziemlich geniale
Idee. Die gängigen Dateisysteme (ext2, ext3, etc.) können nämlich
große Dateien mit "Lücken" speichern. Das passiert z.B., wenn du
ne neue Datei anlegst, was reinschreibst, dann einen seek() weit
nach Vorne machst, und weiterschreibst. Diese Lücke belegt keinen
zusätzlichen Speicherplatz! Ein read() aud diese unbelegten Bereiche
liefert einfach Nullen.

Das "cp --sparse=always" erkennt beim Kopieren größere Bereiche von
Nullen und erzeugt entsprechende "sparse"-Dateien, statt einfach nur
blind die Nullen mitzukopieren. Die Ziel-Datei wird genauso groß sein
wie die Partition (mit "ls" nachprüfbar), aber mit nur einen Bruchteil
davon tatsächlich an Speicher belegen (mit "du" nachprüfbar).

So hat man auf der einen Seite alle Nullen "wegkomprimiert", aber
auf der anderen Seite eine Datei, die man wieder direkt mounten
kann.

Dein gzip-Archiv hingegen müsstest du erstmal entpacken, wofür du
i.d.R. nicht genug Speicher frei haben wirst.

Wiegesagt, eine geniale Idee von Olaf! Muss ich mir unbedingt merken.


Gruß,

    Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l