{"id":415,"date":"2014-10-05T19:21:43","date_gmt":"2014-10-05T19:21:43","guid":{"rendered":"http:\/\/192.168.2.32:8082\/?p=415"},"modified":"2020-02-22T13:17:47","modified_gmt":"2020-02-22T13:17:47","slug":"disks-klonen-mit-dd-disk-dump","status":"publish","type":"post","link":"https:\/\/www.dev-metal.ch\/?p=415","title":{"rendered":"Disks klonen mit dd (Disk Dump)"},"content":{"rendered":"\n<!--more-->\n\n\n\n<h1 class=\"wp-block-heading\">Backup einer Disk auf ein komprimiertes Image und Restore<\/h1>\n\n\n\n<p>Verschaffen wir uns erst einen \u00dcberblick auf die eigenen Festplatten:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">sudo fdisk -l\n$ Festplatte \/dev\/sdf: 14.9 GiB, 15980298240 Bytes, 31211520 Sektoren<\/pre>\n\n\n\n<p>Backups werden gezogen mit<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">dd if=\/dev\/sdf | gzip -9 &gt; ~\/image-compress_sdf.img.gz<\/pre>\n\n\n\n<p>Restores:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">gunzip -c ~\/image-compress_sdf.img.gz | dd of=\/dev\/sdf<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Backup vom Masterboot Record<\/h1>\n\n\n\n<p><\/p>\n\n\n\n<p>Der MasterBootRecord (MBR) setzt sich aus dem Boot-Loader und der Partitionstabelle zusammen.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Der MBR ist exakt 512 Bytes lang und liegt am Beginn der Festplatte.<\/li><li>Der Boot-Loader belegt die ersten 446 Bytes des MBR.<\/li><\/ul>\n\n\n\n<p>Verschaffen wir uns erst einen \u00dcberblick auf die eigenen Festplatten:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">sudo fdisk -l\n<\/pre>\n\n\n\n<p>Nun erstellen wir uns einen Ordner im Dateisystem der Live-CD und h\u00e4ngen dort eine Partition ein, auf welcher die Sicherung des MBR erstellt wird. Es kann sich hierbei auch um einen USB-Stick, eine Netzwerkfreigabe oder ein anderes Medium handeln, auf welches man jederzeit Zugriff hat.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">sudo mkdir \/mnt\/backupdisk\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">sudo mount \/dev\/sda3 \/mnt\/backupdisk<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">cd ~\/sda3<\/pre>\n\n\n\n<p>Jetzt kann mit dem eigentlichen Sichern begonnen werden. Mit dem folgenden Befehlsaufruf wird der Boot-Loader der Festplatte \/dev\/sda als Datei bootloader_sicherung im aktuellen Verzeichnis gesichert. Die Partitionstabelle ist in dieser Sicherung nicht enthalten:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">dd if=\/dev\/sda of=bootloader_sicherung bs=446 count=1\n<\/pre>\n\n\n\n<p>Der folgende Befehl sichert den gesamten MBR (inklusive Partitionstabelle) der Festplatte \/dev\/sda als Datei mbr_sicherung im aktuellen Verzeichnis:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">dd if=\/dev\/sda of=mbr_sicherung bs=512 count=1  \n<\/pre>\n\n\n\n<p><strong>Achtung!<\/strong><br>\u00c4ndert man nach einer Sicherung des MBR plus Partitionstabelle die Partitionierung der Platte, muss unbedingt eine neue Sicherung angelegt werden. Spielt man eine alte Sicherung (mit alter und somit falscher Partitionstabelle) zur\u00fcck, kann man auf die komplette Platte unter Umst\u00e4nden nicht mehr zugreifen.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Restore des Masterboot Record<\/h1>\n\n\n\n<p>Eine Sicherung des Boot-Loaders wird mit<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">dd if=bootloader_sicherung of=\/dev\/sda bs=446 count=1\n<\/pre>\n\n\n\n<p>zur\u00fcckgespielt. Dieses Kommando kann auch mit einer kompletten Sicherung des MBRs verwendet werden: Es wird nur der Boot-Loader wiederhergestellt, die momentane Partitionstabelle bleibt unber\u00fchrt.<\/p>\n\n\n\n<p>Will man den MBR (also inklusive Partitionstabelle) zur\u00fccksichern, so lauten die Befehle wie folgt:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">dd if=mbr_sicherung of=\/dev\/sda bs=512 count=1\n<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Komplette Festplatte klonen<\/h1>\n\n\n\n<p>dd kann die komplette Festplatte klonen. Hierbei werden einfach (relativ r\u00fccksichtslos) alle Bits 1:1 von der einen Festplatte auf die andere kopiert. Entsprechend sollten beide Festplatten gleich gross sein. Uns so wirds gemacht:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">dd if=\/dev\/hda of=\/dev\/hdb\n<\/pre>\n\n\n\n<p>Das kopiert die komplette Festplatte (wenn ein Masterboot Record auf hda exisitiert auch diesen) von hda nach hdb.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Partitionen klonen<\/h1>\n\n\n\n<p>Der folgende Befehl klont (kopiert) die komplette Partition \/dev\/hda1 auf die Partition \/dev\/hdb1:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">dd if=\/dev\/hda1 of=\/dev\/hdb1\n<\/pre>\n\n\n\n<p>Da sich der Masterboot Record nicht auf der Partition befindet wird hier kein Masterboot Record kopiert, dies auch wenn es sich um die erste Partition der Festplatte handelt.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Klonen einer Partition in ein Image-File<\/h1>\n\n\n\n<p>Der folgende Befehlt erstellt ein komprimiertes Image der Partition \/dev\/hda1 und speichert dieses in die Datei image-compress_hda1.img im Heimatverzeichnis. Hierbei sind zwei Sachen zu beachten.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Die Live CD muss schreibend auf das Ziellaufwerk zugreifen k\u00f6nnen und<\/li><li>Das Format des Ziellaufwerkes muss sehr grosse Dateien unterst\u00fczten. Je nachdem wie gross die zu sichernde Partition ist, wird die Sicherung selber auch entsprechend sehr gross.<\/li><\/ul>\n\n\n\n<p>Eine \u00dcbersicht \u00fcber die maximalen Fileg\u00f6ssen den versch. File-Systeme:<\/p>\n\n\n\n<figure class=\"wp-block-table wiki-table\"><table class=\"\"><tbody><tr><th>Filesystem<\/th><th>Max File Gr\u00f6sse<\/th><\/tr><tr><td>Fat16<\/td><td>2 GB<\/td><\/tr><tr><td>Fat32<\/td><td>4 GB<\/td><\/tr><tr><td>NTFS<\/td><td>16 EB (Exabyte)<\/td><\/tr><tr><td>ReiserFS<\/td><td>8 TB<\/td><\/tr><tr><td>EXT3<\/td><td>16 GB<\/td><\/tr><tr><td>EXT4<\/td><td>16 TB<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Durch das Weglassen von &#8222;of&#8220; im Befehlsaufruf werden die Daten auf die Standardausgabe geschrieben, wo sie dann per Pipe-Operator an gzip weitergeleitet werden:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">dd if=\/dev\/hda1 | gzip -9 &gt; ~\/image-compress_hda1.img.gz\n<\/pre>\n\n\n\n<p>&#8222;-9&#8220; ist die h\u00f6chste Komprimierungsstufe von gzip. Die ist entsprechend auch langsam. &#8222;-1&#8220; ist die kleinste Komprimierungsstufe und entsprechend am schnellsten.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Klonen einer Remote-Disk in ein lokal gespeichertes Image-File<\/h1>\n\n\n\n<p>F\u00fcr das Erstellen eines Klons einer Remote-Disk auf ein lokal gespeichertes Image-File kann man auf zwei Varianten durch f\u00fchren:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ausf\u00fchrung auf dem Remote-System<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">dd if=\/dev\/sda | gzip -9 - | ssh user@local dd of=image.gz<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Ausf\u00fchrung auf dem lokalen System<\/h2>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">ssh user@remote \"dd if=\/dev\/sda | gzip -1 -\" | dd of=image.gz<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Restore eines Images<\/h1>\n\n\n\n<p>Ein gesichertes Image-File kann folgendermassen zur\u00fcckgesichert werden:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">gunzip -c ~\/image-compress_hda1.img.gz | dd of=\/dev\/hda1\n<\/pre>\n\n\n\n<p>Hier wird die Sicherung image-compress_hda1.img.gz in die Partition \/dev\/hda1 gesichert.<br>Wenn es sich um ein Image handelt welche nicht komprimiert wurde:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">dd if=\/mnt\/image-compress_hda1.img.gz | dd of=\/dev\/hda1\n<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Mit dd erstellte Images einbinden<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Image einer Partition ohne Masterboot Record einbinden<\/h2>\n\n\n\n<p>Ein mit dd erstelltes Image l\u00e4sst sich als Loop-Device mit dem Befehl mount einbinden. So kann auf das Image wie auf ein normales Laufwerk zugegriffen werden.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">sudo mkdir \/mnt\/loop_mount\n<\/pre>\n\n\n\n<p>Jetzt kann man das mit dd erzeugt Image mit mount einbinden:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">sudo mount -o loop ~\/loop_image.img \/mnt\/loop_mount\n<\/pre>\n\n\n\n<p>Nun kann man auf alle Dateien, Verzeichnisse etc. des Images wie auf ein regul\u00e4res Laufwerk zugreifen. Nach der Benutzung muss man das Image dann wieder mit umount aush\u00e4ngen:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">sudo umount \/media\/loop_mount\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Image einer Partition inkl. Masterboot Record einbinden<\/h2>\n\n\n\n<p>Hat man nicht nur eine Partition, sondern die gesamte Festplatte inclusive MBR gesichert, braucht man den Offset, der jeweiligen Partition. Diesen kann man mit dem Befehl<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">sudo fdisk -l -u \/Pfad\/zum\/Image.img\n<\/pre>\n\n\n\n<p>herausfinden. Die Ausgabe sieht bei 3 prim\u00e4ren Partitionen ungef\u00e4hr so aus:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">Platte \/Pfad\/zum\/Image.img: 0 MByte, 0 Byte\n255 K\u00f6pfe, 63 Sektoren\/Spuren, 0 Zylinder, zusammen 0 Sektoren\nEinheiten = Sektoren von 1 \u00d7 512 = 512 Bytes\nDisk identifier: 0xd53d826f\n\n    Ger\u00e4t            boot. Anfang      Ende         Bl\u00f6cke     Id  System\n\/Pfad\/zum\/Image.img1   *          63   104872319    52436128+   7  HPFS\/NTFS\nPartition 1 hat unterschiedliche phys.\/log. Enden:\n     phys=(1023, 254, 63) logisch=(6527, 254, 63)\n\/Pfad\/zum\/Image.img2       104872320   109065284    2096482+   82  Linux Swap \/ Solaris\nPartition 2 hat unterschiedliche phys.\/log. Anf\u00e4nge (nicht-Linux?):\n     phys=(1023, 0, 1) logisch=(6528, 0, 1)\nPartition 2 hat unterschiedliche phys.\/log. Enden:\n     phys=(1023, 254, 63) logisch=(6788, 254, 63)\n\/Pfad\/zum\/Image.img3       109065285   156296384    23615550   83  Linux\nPartition 3 hat unterschiedliche phys.\/log. Anf\u00e4nge (nicht-Linux?):\n     phys=(1023, 0, 1) logisch=(6789, 0, 1)\nPartition 3 hat unterschiedliche phys.\/log. Enden:\n     phys=(1023, 254, 63) logisch=(9728, 254, 63)<\/pre>\n\n\n\n<p>Der Wert hinter der entsprechende Partition unter Anfang, ist der Offset, dieser muss jedoch noch mit der weiter oben angegebenen Sektorgr\u00f6\u00dfe multipliziert werden (hier 512). Der Offset f\u00fcr die 3. Partition w\u00e4hre also 109065285 * 512 = 55841425920. Nun Folgt der Mountbefehl mit dem entsprechenden Offset (hier wieder am Beispiel der 3. Partition):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">sudo mkdir \/media\/loop_mount # Verzeichniss anlegen\n<\/pre>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">sudo mount -o loop,offset=55841425920 \/Pfad\/zum\/Image.img \/media\/loop_mount<\/pre>\n\n\n\n<p>Das w\u00e4rs. \ud83d\ude42<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Den Fortschritt von dd abfragen<\/h1>\n\n\n\n<p>Wenn das dd-Kommando einmal abgesetzt wurde, w\u00fcnscht man sich bei gr\u00f6\u00dferen Kopiervorg\u00e4ngen eine Kontrollm\u00f6glichkeit \u00fcber den Fortschritt. Dies geht, indem man dem dd-Prozess das Signal USR1 sendet.<br>Man \u00f6ffnet dazu eine zweite Konsole. Mit<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">ps -a\n<\/pre>\n\n\n\n<p>ermittelt man die Prozessnummer von dd.<br>Mit dem Befehl<\/p>\n\n\n\n<pre class=\"wp-block-preformatted lang:sh decode:true\">kill -USR1 &lt;prozessnummer&gt;\n<\/pre>\n\n\n\n<p>wird der dd-Prozess veranlasst, die bisher kopierte Datenmenge anzuzeigen. Diese Ausgabe erfolgt in dem Konsolenfenster, indem dd gestartet wurde.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Links<\/h1>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"http:\/\/wiki.ubuntuusers.de\/Shell\/dd?highlight=klon#Partitionen-klonen\" target=\"_blank\" rel=\"noopener noreferrer\">Ubuntuusers<\/a><\/li><li><a title=\"G4U: Disk klonen\" href=\"http:\/\/192.168.2.32:8082\/?p=413\" target=\"_blank\" rel=\"noopener noreferrer\">G4U<\/a><\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[5],"tags":[16],"class_list":["post-415","post","type-post","status-publish","format-standard","hentry","category-linux-diverses","tag-linux-tools"],"modified_by":"ralph","_links":{"self":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/415","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=415"}],"version-history":[{"count":10,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/415\/revisions"}],"predecessor-version":[{"id":1358,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=\/wp\/v2\/posts\/415\/revisions\/1358"}],"wp:attachment":[{"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=415"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=415"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dev-metal.ch\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=415"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}