Using dd to Make a Clone of a Drive

Kevin Kinsey kdk at daleco.biz
Tue Feb 14 05:49:49 PST 2006


Kevin Kinsey wrote:

> Giorgos Keramidas wrote:
>
>> On 2006-02-09 14:36, Martin McCormick <martin at dc.cis.okstate.edu> wrote:
>>  
>>
>>>     After installing FreeBSD5.4, the ISC dhcp server and ISC bind
>>> on a hard drive, I wanted to clone that drive to a second drive so as
>>> to generate a second server, using what I had already installed as a
>>> template.  I used the following command:
>>>
>>> dd if=/dev/da0 of=/dev/da1 bs=512
>>>
>>>     It turns out that dd defaults to 512-byte blocks so I didn't
>>> really need the bs=512, but I am not sure I haven't made some other
>>> type of mistake.  The dd command has been running for about 4 hours on
>>> a very fast system, with a 1-gig processor, 1 gig of RAM and two 31-GB
>>> drives.  One would think it should have finished by now, but it is
>>> still running.  Is this a valid method of copying the entire contents
>>> of one drive to another?  Thank you.
>>>   
>>
>>
>> Bah!  That's too slow for my taste.  I would usually go for a newfs,
>> dump, and restore option.  For instance, to create a copy of /usr on a
>> second disk:
>>
>>    newfs -U /dev/ad1s1a
>>    mount /dev/ad1s1a /mnt
>>    dump -0 -a -L /usr | ( cd /mnt ; restore ruvf - )
>>
>> Copying with dd(1) is not as fast :)
>>  
>>
> Sorry to butt in --- but I'm needing to start cloning too.  Looks
> like a winner to me ... wouldn't this have the added advantage
> of making "same size and geometry" (cf. Erik Trulsson, 4 hours ago,
> this thread) less relevant?
>
> As long as the "new" slice had enough space, geometry shouldn't
> matter to dump|restore ....  <?>
>
> Kevin Kinsey


Just for the archives:

Giorgios' solution is very nice, but needs the "-f" option and another
"-" to work properly AFAICT, both from experience and from reading
dump(8):

          dump -0 -a -L -f - /usr | (cd /mnt ; restore ruvf - )

If you don't include "-f" (for "file") and "-" (for "stdout"), then your
command will fail with:

          DUMP: Cannot open output "/dev/sa0"

    unless you actually have a tape drive, as, of course, any
experienced user could have told you would happen, if
not when they read the incorrect command line, then when
they saw, previously:

          DUMP: Dumping snapshot of /dev/$somedisk to /dev/sa0


I used the strategy above to clone a working installation of
Wine and a rather obscure Win32 program from a 20 GB IDE
HDD to an 8GB drive with good success after attempts to
"re-create" a similar installation manually had failed, presumably
because something in re: Wine had changed in the interim,
though we've been unable to establish this as fact.

So, I've adopted dump(8) and restore(8) for disk cloning as
a result of this experience.  Next step: moving to dump|restore
for my home-brew backup routines....

HTH Someone,

Kevin Kinsey

-- 
Heisenberg may have slept here




More information about the freebsd-questions mailing list