Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Full-disk image maken met dd  (gelezen 5488 keer)

Offline Falcon22

  • Lid
Full-disk image maken met dd
« Gepost op: 2010/07/31, 23:32:22 »
Hallo,

Ik wil een complete image te maken van mijn harde schijf naar een externe harde schijf. Volgens mij weet ik redelijk welk commando ik hier voor moet gebruiken maar er zijn nog een paar onduidelijkheden. Allereerst boot ik vanaf mijn Live-usb waarna ik zowel de interne schijf /dev/sda als de externe harde schijf /dev/sdb mount. Vervolgens begin ik het commando als volgt:

dd if=/dev/sda of=/dev/sdb

Maar vervolgens weet ik niet welke (cluster) grootte ik moet nemen. Ik snap dat de verschillende grootheden (bijv 512 of 4096) de grootte aangeven van de blokken die overgeschreven worden, maar wat is het beste om te doen? 512, 1024, 2056 enz.. mocht iemand dit weten dan hoor ik het graag.

Daarnaast lees ik op het internet dat je als laatste moet typen "conv=notrunc,noerror". Dat het laatste staat voor "no error" snap ik, maar waarvoor dient notrunc en noerror? Als iemand dit weet dan hoor ik ook graag.

Misschien wil de image ook comprimeren naar bijvoorbeeld een tar.gz formaat. Dit kan met een pipe en volgens mij wordt het commando dan:

dd if=/dev/sda of=/dev/sdb | tar.gz

maar dit weet ik niet zeker.

PS Deze topic hier geplaatst omdat ik hem hier het beste vond passen.

Offline Bloom

  • Lid
Re: Full-disk image maken met dd
« Reactie #1 Gepost op: 2010/08/01, 01:23:30 »
Kopieer een harde-schijfpartitie naar een andere partitie:
dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
Met compressie:
dd if=/dev/sda1 conv=sync,noerror bs=64K | gzip -c  > /blabla/sda1.img.gz
Om een gecomprimeerd imagebestand te restoren:
gunzip -c /blabla/sda1.img.gz | dd of=/dev/sda1 conv=sync,noerror bs=64K
Je haalt wel een veel betere compressie door p7zip te installeren.
Vervang dan gzip -c door 7zr a -si met extensie .7z
en bij de restore vervang je gunzip -c door 7zr e -so

Offline koos4401

  • Lid
Re: Full-disk image maken met dd
« Reactie #2 Gepost op: 2010/08/01, 10:16:10 »
Even een vraagje: waarom niet met Clonezilla? http://sourceforge.net/projects/clonezilla/files/clonezilla_live_stable/clonezilla-live-1.2.5-17-i686.iso/download
Voordeel:
Die maakt ook nog een opstartschijf voor je aan, beter nog gezegd: is zelf bootable.
Op 27-okt-2009 om 08.20 GMT geregistreerd als gebruiker nr.: 498523

Offline Falcon22

  • Lid
Re: Full-disk image maken met dd
« Reactie #3 Gepost op: 2010/08/01, 12:35:53 »
Kopieer een harde-schijfpartitie naar een andere partitie:
dd if=/dev/sda1 of=/dev/sdb1 bs=4096 conv=notrunc,noerror
Met compressie:
dd if=/dev/sda1 conv=sync,noerror bs=64K | gzip -c  > /blabla/sda1.img.gz
Om een gecomprimeerd imagebestand te restoren:
gunzip -c /blabla/sda1.img.gz | dd of=/dev/sda1 conv=sync,noerror bs=64K
Je haalt wel een veel betere compressie door p7zip te installeren.
Vervang dan gzip -c door 7zr a -si met extensie .7z
en bij de restore vervang je gunzip -c door 7zr e -so

Bedankt voor je antwoord, maar dit is niet helemaal wat ik bedoel. Ik wil eigenlijk een kopie maken van de gehele harde schijf en deze kopiëren naar de externe harde schijf. Wordt het commando niet gewoon als volgt (wil p7zip wel gebruiken):

dd if=sda conv=sync,noerror bs=64k | 7zr a -si > /blabla/sda.img.7z

Maar maak je hiermee niet eerst gewoon een gecomprimeerde image van de harde schijf die je ook ergens op die harde schijf neerzet? Dan moet je die image /blabla/sda.img.7z dus nog over zetten naar de externe harde schijf?

Daarnaast weet je waarvoor notrunc en sync staan. En weet je ook waarom je opeens in blokken van 64k moet gaan schrijven op het moment dat je gaat comprimeren. En als je een 1 op 1 kopie maakt in blokken van 4096?

@koos4401:

Omdat je clonezilla dan overal mee naar moe toe moet slepen, daarnaast vond ik het geen gemakkelijk programma om te gebruiken. dd zit in elke linux distro en dat kan ik dus overal en nergens vanaf m'n Live-usb gebruiken.


Offline Bloom

  • Lid
Re: Full-disk image maken met dd
« Reactie #4 Gepost op: 2010/08/01, 13:03:26 »
Bedankt voor je antwoord, maar dit is niet helemaal wat ik bedoel. Ik wil eigenlijk een kopie maken van de gehele harde schijf en deze kopiëren naar de externe harde schijf. Wordt het commando niet gewoon als volgt (wil p7zip wel gebruiken):

dd if=sda conv=sync,noerror bs=64k | 7zr a -si > /blabla/sda.img.7z

Maar maak je hiermee niet eerst gewoon een gecomprimeerde image van de harde schijf die je ook ergens op die harde schijf neerzet? Dan moet je die image /blabla/sda.img.7z dus nog over zetten naar de externe harde schijf?
De instructie is correct. Als je alleen maar wil gebruiken wat lokaal aanwezig is, dan is 7zr er meestal nooit. Je kunt natuurlijk altijd sudo aptitude install p7zip doen voordat je begint.
Je vervangt de '/blabla/' vooraan het imagearchief door de verwijzing naar je usb-schijf. De harde schijf die je kopieert mag niet gemount zijn: als dat wel zo is, unmount die dan eerst. De usb-schijf moet wel gemount zijn vermits je naar een bestand kopieert.
Bij Ubuntu zijn gemounte usb-schijven te vinden onder /media. Als de gemounte partitie een volumelabel heeft, wordt dat als koppelpuntnaam gebruikt. Als de gemounte usb-schijfpartitie geen label heeft, gebruikt Ubuntu het seriële nummer van het volume als koppelpunt naam. Stel dat je usb-hardeschijf als koppelpuntnaam /media/usbschijf heeft, dan wordt het bevel:
dd if=sda conv=sync,noerror bs=64k | 7zr a -si > /media/usbschijf/sda.img.7zDit werkt zonder iets te tonen. Als je graag een progressie wil zien, moet je eerst het programma pv installeren:
sudo aptitude install pvDaarna kun je dit doen:
dd if=sda conv=sync,noerror bs=64k | pv -p | 7zr a -si > /media/usbschijf/sda.img.7z
Daarnaast weet je waarvoor notrunc en sync staan.
Dat zijn zogenaamde conversie-opties. Notrunc wil zeggen dat hij niets mag afkappen en sync wil zeggen dat hij overblijvende ruimte in een blok altijd moet opvullen met nulbytes. En noerror wil zeggen dat hij leesfouten moet negeren.

En weet je ook waarom je opeens in blokken van 64k moet gaan schrijven op het moment dat je gaat comprimeren. En als je een 1 op 1 kopie maakt in blokken van 4096?
Bij de één-op-éénkopie tussen twee harde schijven werk je best met een veelvoud van de standaard blokgrootte van de harde schijf. Als je dat te groot neemt, dan kan de schijf waarop je schrijft het mogelijk niet meer volgen en creeër je een flessehals waardoor alles juist trager gaat. Als je naar een bestand kopieert (dus een image maakt) dan is er geen beperking vermits file systems juist wel grote blokken data tegelijk kunnen verwerken. Vandaar de blokgrootte van 64K.
Overigens is het ook perfect mogelijk een gecomprimeerd image te maken van harde-schijfpartities via het internet.

Offline Falcon22

  • Lid
Re: Full-disk image maken met dd
« Reactie #5 Gepost op: 2010/08/01, 13:26:48 »

De instructie is correct. Als je alleen maar wil gebruiken wat lokaal aanwezig is, dan is 7zr er meestal nooit. Je kunt natuurlijk altijd

sudo aptitude install p7zip

doen voordat je begint.
Je vervangt de '/blabla/' vooraan het imagearchief door de verwijzing naar je usb-schijf. De harde schijf die je kopieert mag niet gemount zijn: als dat wel zo is, unmount die dan eerst. De usb-schijf moet wel gemount zijn vermits je naar een bestand kopieert.
Bij Ubuntu zijn gemounte usb-schijven te vinden onder /media. Als de gemounte partitie een volumelabel heeft, wordt dat als koppelpuntnaam gebruikt. Als de gemounte usb-schijfpartitie geen label heeft, gebruikt Ubuntu het seriële nummer van het volume als koppelpunt naam. Stel dat je usb-hardeschijf als koppelpuntnaam /media/usbschijf heeft, dan wordt het bevel:

dd if=sda conv=sync,noerror bs=64k | 7zr a -si > /media/usbschijf/sda.img.7z
Dit werkt zonder iets te tonen. Als je graag een progressie wil zien, moet je eerst het programma pv installeren:

sudo aptitude install pv
Daarna kun je dit doen:

dd if=sda conv=sync,noerror bs=64k | pv -p | 7zr a -si > /media/usbschijf/sda.img.7z

Uiteraard, uit je eerste post had ik al begrepen dat p7zip niet standaard geinstalleerd is, dus had ik deze via Softwarecentrum geinstalleerd. Net heb ik hier pv aan toegevoegd.

Okee, dus als ik zometeen opstart vanaf mijn Live-USB dan moet ik de externe harde schijf aansluiten en deze mounten. Ik heb op m'n Live-USB Backtrack staan, daar gaat het mounten niet automatisch maar dat moet wel lukken. Ik dacht alleen dat je standaard apparaten mount onder /mnt? In mijn geval zou dat zoiets worden als /mnt/sdb? In ieder geval de code zou dan worden:

dd if=sda conv=sync,noerror bs=64k | pv -p | 7zr a -si > /mnt/sdb/sda.img.7z
Dat zijn zogenaamde conversie-opties. Notrunc wil zeggen dat hij niets mag afkappen en sync wil zeggen dat hij overblijvende ruimte in een blok altijd moet opvullen met nulbytes. En noerror wil zeggen dat hij leesfouten moet negeren.

Duidelijk.

Bij de één-op-éénkopie tussen twee harde schijven werk je best met een veelvoud van de standaard blokgrootte van de harde schijf. Als je dat te groot neemt, dan kan de schijf waarop je schrijft het mogelijk niet meer volgen en creeër je een flessehals waardoor alles juist trager gaat. Als je naar een bestand kopieert (dus een image maakt) dan is er geen beperking vermits file systems juist wel grote blokken data tegelijk kunnen verwerken. Vandaar de blokgrootte van 64K.
Overigens is het ook perfect mogelijk een gecomprimeerd image te maken van harde-schijfpartities via het internet.

Okee, ook duidelijk. Het is dus afhankelijk van de schrijfsnelheid en de manier van schrijven welke grootte je neemt. Ik denk dat dit ook wel meer duidelijk wordt naarmate je het wat vaker doet?

Offline Bloom

  • Lid
Re: Full-disk image maken met dd
« Reactie #6 Gepost op: 2010/08/01, 16:14:54 »
dd if=sda ...
Dit moet telkens natuurlijk if=/dev/sda zijn!

Okee, dus als ik zometeen opstart vanaf mijn Live-USB dan moet ik de externe harde schijf aansluiten en deze mounten. Ik heb op m'n Live-USB Backtrack staan, daar gaat het mounten niet automatisch maar dat moet wel lukken. Ik dacht alleen dat je standaard apparaten mount onder /mnt? In mijn geval zou dat zoiets worden als /mnt/sdb? In ieder geval de code zou dan worden:
dd if=sda conv=sync,noerror bs=64k | pv -p | 7zr a -si > /mnt/sdb/sda.img.7z
Bij Ubuntu staan de standaardmounts altijd onder /media, maar bij andere Linuxen en bij *BSD's staan ze onder /mnt.
Als je een Ubuntu Live CD gebruikt, dan zal het dus /media moeten zijn. Bij een niet-Ubuntu is /mnt inderdaad waarschijnlijker. En de juiste devicenaam voor de harde schijf moet je ook nakijken met behulp van sudo fdisk -l. Een harde schijf is bij sommige Linux'en /dev/hdX en bij Ubuntu meestal /dev/sdX.

Het is dus afhankelijk van de schrijfsnelheid en de manier van schrijven welke grootte je neemt. Ik denk dat dit ook wel meer duidelijk wordt naarmate je het wat vaker doet?
Oefening baart kunst!  ;)
Het voornaamste probleem bij dd is, dat zijn opdrachtregelparameters grof afwijken van de Linux-standaard. Maar zoals bij alles krijg je dat beter onder de knie naarmate je er meer gebruik van maakt.

Offline Falcon22

  • Lid
Re: Full-disk image maken met dd
« Reactie #7 Gepost op: 2010/08/01, 22:02:33 »
Het is gelukt! Met:

dd if=/dev/sda of=/mnt/sdc1
heb ik een volledige kopie gemaakt van mijn harde schijf! :) Het pipen naar een gecomprimeerd bestand lukte niet zo goed omdat pv en p7zip niet goed wilden draaien op de live-usb. Had deze in persistent mode maar op de een of andere manier werkte het niet.

Na 6 uur was er met een snelheid van 30 MB/s een harde schijf van 640 GB gekopieerd. Valt me eigenlijk nog wel iets mee.

Wat ik me alleen nog even afvraag, bij het commando heb ik de gehele harde schijf gespecificeerd, (sda) hierbij is het MBR ook meegekopieerd toch? Want als ik nu de harde schijf aansluit dan mount die direct de verschillende partities (stuk of 10) maar de MBR zie ik nergens terug.

Anyway alvast super bedankt voor je hulp en uitleg Bloom!

Offline Bloom

  • Lid
Re: Full-disk image maken met dd
« Reactie #8 Gepost op: 2010/08/01, 22:23:52 »
Als je de volledige schijf kopieert wordt de mbr ook meegekopieerd.
Maar als je dat wenst, dan kun je die zeker apart kopiëren:
dd if=/dev/sda of=/mnt/sdc1/sda-mbr bs=512 count=1Om te restoren:
dd if=/mnt/sdc1/sda-mbr of=/dev/sda bs=512 count=1Hierbij bevat de MBR dus ook de partitietabel. Wil je de partitietabel niet meekopiëren omdat je die liever manueel aanmaakt, vervang dan de 512 door 446: dan zal de partitietabel niet meegekopieerd worden.

Offline Bloom

  • Lid
Re: Full-disk image maken met dd
« Reactie #9 Gepost op: 2010/08/01, 22:26:40 »
Het pipen naar een gecomprimeerd bestand lukte niet zo goed omdat pv en p7zip niet goed wilden draaien op de live-usb. Had deze in persistent mode maar op de een of andere manier werkte het niet.
Het systeem moet twee datablokken van elk 64K (dus in totaal 128K) en wat extra bufferruimte voor 7zr kunnen opslaan in /tmp opdat die pipingopdrachten zouden lukken. Als je van een livecd of usbstick gestart bent, is het mogelijk dat /tmp wijst naar een ramdisk. Als daar dan niet genoeg plaats vrij is, lukken de pipes niet.

Offline rja

  • Lid
Re: Full-disk image maken met dd
« Reactie #10 Gepost op: 2010/08/02, 16:51:21 »
Ik zou niet de gehele harddisk klonen.

Maar de partities die er op staan.

Ben je veel flexibeler, van de mbr kun je apart een backup maken.