红联Linux门户
Linux帮助

FreeBSD系统备份恢复及迁移

发布时间:2007-04-18 00:31:38来源:红联作者:Popularize
将FreeBSD从一块20G的硬盘迁移到另一个80G 的硬盘的最后一个主分区, 该分区大小基本上仍然在20G左右
原分区情况
Filesystem 1M-blocks Used Avail Capacity Mounted on
/dev/ad0s1a 313 67 221 23% /
devfs 0 0 0 100% /dev
/dev/ad0s1e 495 342 114 75% /tmp
/dev/ad0s1f 7096 5957 570 91% /usr
/dev/ad0s1d 495 339 117 74% /var
linprocfs 0 0 0 100% /usr/compat/linux/proc
procfs 0 0 0 100% /proc

新硬盘计划挂载在/dev/ad0上
对新的磁盘进行分区
由于两块硬盘分区的大小不一致, 所以使用了一张FreeBSD的安装光盘进行Minimal的安装, 这时去掉原硬盘, 在ad0上挂载新硬盘, 安装时分区情况如下: /dev/ad0s4a分给`/', /dev/ad0s4b分给swap, /dev/ad0s4d分给`/var', /dev/ad0s4e分给`/tmp', /dev/ad0s4f分给`/usr', /dev/ad0s4g分给`/home'
迁移`/'数据
重启进入单用户模式, 将新硬盘设置为从盘, 在ad0挂载原硬盘, ad1挂载新硬盘, 由于分区的情况不一致, 不能使用dump/restore进行恢复`/', 因为FreeBSD的分区表信息 位于/dev/ad0s4a, 也就是现在的/dev/ad1s4a上的前512字节中, 直接的dump/restore会 导致分区信息被覆盖, 因此对`/'采用pax进行备份和恢复, 最后修改fstab中各个挂载点的设备, 记得修改为ad0s4x, 因为最后新硬盘要挂载在ad0上, 命令如下:
# /sbin/fsck -p
# /sbin/mount -a
# /sbin/swapon -a
# /sbin/adjkerntz -i
# export HOME=/root
# export TERM=vt200
# csh -l
# mkdir -p /mnt/new/root
# mkdir -p /mnt/new/var
# mkdir -p /mnt/new/tmp
# mkdir -p /mnt/new/usr
# newfs /dev/ad1s4a
# mount /dev/ad1s4a /mnt/fs/root
# cd /mnt/fs/root; pax -rw -pe -X / .
# cd /mnt/fs/root/etc
# vi fstab

恢复FreeBSD其他分区的数据
这里由于不涉及对分区信息的操作, 可以使用dump/restore进行数据迁移, 同样也可以使用pax进行迁移, 这里使用dump/restore进行迁移
# newfs /dev/ad1s4d
# newfs /dev/ad1s4e
# newfs /dev/ad1s4f
# newfs /dev/ad1s4g
# newfs /dev/ad1s4h
# mount /dev/ad1s4d /mnt/new/var
# mount /dev/ad1s4e /mnt/new/tmp
# mount /dev/ad1s4f /mnt/new/usr
# (dump -0b 512 -f - /usr) | (cd /mnt/new/usr; restore -rb 512 -f - )
# (dump -0f - /var) | (cd /mnt/new/var; restore -rf - )
# umount /mnt/new/var
# umount /mnt/new/tmp
# umount /mnt/new/usr
# tunefs -n enable /dev/ad1s4d
# tunefs -n enable /dev/ad1s4e
# tunefs -n enable /dev/ad1s4f
# tunefs -n enable /dev/ad1s4g
# tunefs -n enable /dev/ad1s4h

迁移其他数据
其他数据可以通过cp, tar, cpio, pax等迁移
迁移完毕, 关机, 重新挂载新硬盘到ad0, 重启
文章评论

共有 0 条评论