> Linux发行版 > FreeBSD >

使用dumprestore方式快速备份恢复FreeBSD系统

  • 注:此实例在FreeBSD7.2下测试通过,对于FreeBSD8或FreeBSD9同样适用,FreeBSD9简化了默认分区个数,备份恢复步骤也可以简化。

    环境:公司有几台FreeBSD7.2服务器硬盘老化需更换,由于公司写的应用对低版本php5.2依赖比较多,如果升级FreeBSD会比较麻烦(维护版FreeBSD的ports中已经没有php5.2),即使是重新安装FreeBSD7.2,由于官方已经不维护,ports安装也会比较困难。这样考虑使用dump和restore方式直接备份恢复硬盘。

    步骤:

    一、对每台服务器定期dump,以备在硬盘故障时快速恢复系统

    1、关机,挂接备份盘(用来存放dump数据),拔掉原FreeBSD系统盘硬盘线(防止误操作毁数据)

    2、U盘引导FreeBSD(我用的FreeBSD8.2 U盘),对备份盘分区格式化,此步骤可以使用sysinstall工具,比较方便(可以只分一个区,也可以按默认分区无所谓)。

    3、接上原系统盘,重新硬盘引导,mount上备份盘(我的是/bkdisk)

    4、撰写备份脚本,并放到cron里执行,我的脚本dumpslice.sh:

    #!/bin/sh
    # Program:
    # Dump disk slice
    # History:
    # 2014/09/10 yanglifeng First release

    bak_root="/bkdisk/dumpfiles"
    dir_name=`date +%Y%m%d`

    #create backup dir
    mkdir ${bak_root}/${dir_name}

    /sbin/dump -0Lauf ${bak_root}/${dir_name}/ad4s1a_root.dump /dev/ad4s1a
    /sbin/dump -0Lauf ${bak_root}/${dir_name}/ad4s1d_var.dump /dev/ad4s1d
    /sbin/dump -0Lauf ${bak_root}/${dir_name}/ad4s1f_usr.dump /dev/ad4s1f

    df -h > /${bak_root}/sliceinfo.txt

    对于FreeBSD7和FreeBSD8,只需备份/、/var、/usr,/tmp和/dev不需备份

    我的1T硬盘每次dump大概1个多小时

    cron最好在没人用的时间执行,因为dump时系统反应会非常慢,几乎不可用。

    二、硬盘故障时restore

    1、接上新硬盘,并拔掉原系统盘和备份盘硬盘线

    2、U盘引导,使用sysinstall工具对新硬盘分区格式化,分区方式和原系统盘一致

    3、接上备份盘硬盘线,U盘重新引导,进入Fixit模式

    mkdir /mnt/bkdisk #用于mount备份盘

    mkdir /mnt/bkdisk/tmp

    export TMP_DIR=/mnt/bidisk/tmp #restore需要一个比较大的/tmp目录

    mkdir /mnt/newdisk #用于mount新硬盘slice

    mount /dev/adxs1x /mnt/bkdisk #mount备份盘

    mount /dev/ad4s1a /mnt/newdisk #mount新硬盘root分区

    cd /mnt/newdisk

    restore -rf /mnt/bkdisk/ad4s1a_root.dump #restore root分区

    cd /mnt

    umount /mnt/newdisk

    按同样方式restore其他分区

    4、修改/etc/fstab,确认硬盘编号与新硬盘对应

    5、重启用新硬盘引导系统

    说明:

    1、对已原系统盘可用的情况,可以直接使用dump和restore方式将原系统盘数据复制到新硬盘,具体方法请参考网上资料,个人建议无论何种方式都要做好备份,否则一旦数据丢失将无法恢复。

    2、dump可使用网络存储来存放备份数据

    3、只要是FreeBSD支持的硬件,一般可以将装好系统的硬盘挂在任何一台机器上正常使用,只需修改/etc/fstab中硬盘序号以及/etc/rc.conf中网卡名称

    附:

     

    以 dump 及 restore 做 partition 對 partition 的對拷

     

    將分割區 dump 給標準輸出,再讓 restore 由標準輸入還原在新的 partition 就能達到 partition 對 partition 對拷的目的,底下是進行對拷的流程:

     ※ 1-2 的步驟可以執行 /stand/sysinstall ,然後選取 Configure 利用裡面的 Fdisk 和 Label 進行分割及格式化

    例如:想要將 /home (/dev/ad0s1h) 上的所有資料備份到新硬碟上的 partition (/dev/ad2s1h),執行:

    # newfs /dev/ad2s1h (如果已經格式化過則可省略)
    # mount /dev/ad2s1h /mnt (如果已經 mount 好則可省略)
    # cd /mnt
    # dump -0uaf - /home | restore -rf -
    # cd /
    # umount /mnt

    特別注意 dump 及 restore 並沒有指定檔名,而都用了一個減號 ( - ),對 dump 來說,是將 partition 的資料一個 block 一個 block 的送向標準輸出,而 restore 則是由標準輸入讀入並還原。

    参考文档:

    FreeBSD系统完全备份:https://wiki.freebsdchina.org/doc/b/backup_with_dump_and_restore

    FreeBSD手册——添加硬盘:https://www.freebsd.org/doc/zh_CN.UTF-8/books/handbook/disks-adding.html

    档案系统管理:http://www.twbsd.org/cht/book/ch06.htm

    闫国雄——系统备份:http://mail.lsps.tp.edu.tw/~gsyan/freebsd2001/backup.html

      切好新的 partition以 newfs 將 partition format 好將新的 partition mount 好切換至新的 partition 中以 dump & restore 進行備份及還原
(责任编辑:IT)