Copying a disk.
jerrymc at clunix.cl.msu.edu
Mon Apr 17 22:04:51 UTC 2006
> Hi All,
> I finaly have a complete server disk (blank one).
> I was wondering what 'copy' strategy people would recomend.
> i.e how to copy a completly bootable server disk (75Gig SCSI) to another
> identical disk. I have lots of server connections and SCSI connections, so
> thats not an issue.
> I have a Copy of Norton Ghost (Systemworks 2003), or I can use rsync (?).
> Any step by step would be appreciated.
If it were me, I would plub the second disk in.
It is SCSI so it should show up as da1 (or higher if you have
more disks you haven't mentioned).
Then I would use fdisk(8) and bsdlabel(8) to slice and partition it to
be like the other disk. Use newfs(8) to create the file systems and then
use dump(8) and restore(8) to copy the file systems.
Lets presume you have 1 slice all FreeBSD on the disk and in that slice
you have /, swap, /tmp, /usr, /var and /home just for example and you
don't need to copy swap and /tmp, of course.
The following would do it nicely.
dd if=/dev/zero of=/dev/da1 bs=512 count=1024
fdisk -BI da1
bsdlabel -w -B da1s1
--- At this point you will be put in to an editor file with a
nominal 1 partition created. Just for example I will
pick some sizes. Actually, you want to do a bsdlabel on
your da0s1 to see what values to use. Make them the same.
Leave alone all the stuff above the partition information
So, starting here, edit it to be:
# size offset fstype [fsize bsize bps/cpg]
a: 393216 0 4.2BSD 2048 16384 94 #
b: 2572288 * swap # (Cyl. 32*- 192*)
c:156119670 0 unused 0 0 # (Cyl. 0 - 4858)
e: 1048576 * 4.2BSD 2048 16384 89 # (Cyl. 192*- 258*)
f: 4194304 * 4.2BSD 2048 16384 89 # (Cyl. 258*- 519*)
g: 6291456 * 4.2BSD 2048 16384 89 # (Cyl. 519*- 910*)
h: * * 4.2BSD 2048 16384 89 # (Cyl. 910*- 4826*)
That would be / = 192 MB
swap = 1256 MB
/tmp = 512 MB
/usr = 2048 MB
/var = 3072 MB
/home = all the rest of the slice
on a nominal 76 GB drive. Sizes are before newfs or system reserves.
As mentioned above, use the partition identifiers the same as on your
other disk that you want to copy.
Write and exit the editor and your label is done.
newfs /dev/da1s1a becomes /
newfs -U /dev/da1s1e becomes /tmp
newfs -U /dev/da1s1f becomes /usr
newfs -U /dev/da1s1g becomes /var
newfs -U /dev/da1s1h becomes /home
Swap does not get newfs-ed.
Add mount points
You don't need one for the copy of /tmp since you don't need to copy it.
Edit /etc/fstab to add mount instructions.
# Presuming your original fstab has the following as per my example
/dev/da0s1a / ufs rw 1 1
/dev/da0s1b none swap sw 0 0
/dev/da0s1e /tmp ufs rw 2 2
/dev/da0s1f /usr ufs rw 2 2
/dev/da0s1g /var ufs rw 2 2
/dev/da0s1h /home ufs rw 2 2
# add something like the following according to your setup needs.
/dev/da1s1a /cproot ufs rw 2 2
/dev/da1s1f /cpusr ufs rw 2 2
/dev/da1s1g /cpvar ufs rw 2 2
/dev/da1s1h /cphome ufs rw 2 2
Note that you want to change the pass on the cproot to '2' so it
won't mess up boots.
Now mount everything.
Then do the copies.
dump -0af - / | restore -rf -
dump -0af - /usr | restore -rf -
dump -0af - /var | restore -rf -
dump -0af - /home | restore -rf -
You are finished.
In the future, if you make the same copies on to the same disk, you
do not have to reslice, relabel and renewfs everything.
You can just go in to each filesystem and rm -rf it.
Or you could just umount, newfs and remount each partition to clear them.
rm -rf *
Then do copies.
It looks a bit complicated to set up, but it really isn't and it is
the most complete way to create bootable copies of disks.
If you do periodic copies, it would be easy to create a script to
clean the copy (using either rm -rf * or newfs method) and do the
dump/restores. It could even run on the cron if you want. I would
actually suggest setting up a three disk rotation for copies.
> 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