about using dd command to copy hard drives
jerrymc at clunix.cl.msu.edu
Fri Aug 22 08:42:00 PDT 2003
> I'm using freebsd 5.0 Jan 2003 series
> I know that dd is good at copying block devices when they
> are at identical sizes. But if they're different sizes will it
> copy correctly?
If you are copying to a bigger disk you can make it work. But, for
what you seem to want to do, it is not the best way.
> I want to copy my entire freebsd hard disk which is 6 GB
> to a new hard disk at 20 GB.
> I read the man pages but still can't understand it. I'm only a user
> not a programmer nor sys admin. If you have any comments or
> suggestions, I would surely appreciate it.
First of all, you are right. The man page entries are not helpful,
especially the one for fdisk. It doesn't even document all of its
switches and parameters!! You have to get some of that by reading
the examples in the disklabel man page and guessing. But, it is
eventually possible to do it.
Two things you didn't mention are if the old 6 GB disk is you system/boot
disk or not and how the old disk is divided in to partitions or if it
is just one big filesystem. Also, does the new disk need to become
the boot disk?
NOTE: You can do the fdisk/disklabel/newfs stuff via /stand/sysinstall
and it works pretty well and painlessly, especially if you intend
to use the whole disk for FreeBSD. But then you wouldn't have
the thrill of learning to use fdisk/disklabel/newfs and really
they work very well. The documentation is just garbled.
What you want to do is fdisk to create one slice on the whole disk,
partition with disklabel, newfs in each partition (except swap) and
then use dump/restore to copy the filesystems from the old to the
new disk. At this point you could change
Lets say for example you are doing this to a
- SCSI disk and that
- it is the second disk (da1) and you intend to
- move it in to the first position after you are done and boot from it.
- Finally, assume that you intend to have partitions
for root, swap, /tmp and /home.
You may have filesystems divided up differently, but the process is exactly
the same - just with different numbers and names.
fdisk -BI -v -b /boot/mbr da1 /makes one large FreeBSD slice/
disklabel -r -e -B -b /boot/boot1 -s /boot/boot2 da1s1
Edit the disklabel so it looks something like:
Adjust sizes to suit you. Leave all the header stuff as is.
Don't worry about fsize bsize, etc
# size offset fstype [fsize bsize bps/cpg]
a: 1048576 0 4.2BSD 1024 8192 22 # (Cyl. 0 - 65*)
b: 2097152 * swap
c: * 0 unused 0 0 # (Cyl. 0 - 2212*)
e: 1048576 * 4.2BSD
f: * * 4.2BSD
This gives a 512 MG root, 1GB swap, 512 /tmp and all the rest to /home
newfs -b 8192 -f 1024 /dev/da1s1a ( / (root) partition )
newfs -b 8192 -f 1024 /dev/da1s1e ( /tmp partition )
newfs -b 16384 -f 2048 -i 2048 /dev/da1s1f ( /home partition )
Fix up your /etc/fstab to add the following
# Disk da1
/dev/da1s1a /newroot ufs rw 2 2
/dev/da1s1f /newhome ufs rw 2 2
fsck the new filesystems (just to be thorough)
fsck -f /newroot
fsck -f /newhome
Mount the new files systems
Now do the dump and restore to copy the file systems.
Again, this presumes you have this current disk structure - eg essentially
a root and home directory. (/tmp and swap) don't have to be moved)
If you have more partitions/filesystems you will have to adjust the
disklabel edit, add appropriate newfs-s, add more fstab entries and
do the additional dump/restores.
dump -0f - / | restore -xf -
This will take a while
dump -0f - /home | restore -xf -
This may take even longer
Make sure the /etc/fstab on the new disk is right, do:
It needs to have mounts for:
# Disk da0
/dev/da0s1a / ufs rw 1 1
/dev/da0s1b none swap sw 0 0
/dev/da0s1e /tmp ufs rw 2 2
/dev/da0s1f /home ufs rw,userquota 2 2
# Disk da1
# /dev/da1s1a /newroot ufs rw 2 2
# /dev/da1s1f /newhome ufs rw 2 2
Comment out or delete the lines added for /newhome and /newroot
When it is all done, shut down, switch the drives and reboot.
> freebsd-questions at freebsd.org mailing list
> To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"
More information about the freebsd-questions