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 bsdlabel -e --- 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:
8 partitions: # 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
mkdir /cproot mkdir /cpusr mkdir /cpvar mkdir /cphome
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.
cd /cproot dump -0af - / | restore -rf - cd /cpusr dump -0af - /usr | restore -rf - cd /cpvar dump -0af - /var | restore -rf - cd /cphome 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.
cd /cproot rm -rf * etc or umount /cproot newfs /dev/da1s1a etc etc mount -a
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.