警卫战士 發表於 2008-9-8 18:49:14

FreeBSD 数据备份和迁移方法

<p>相信一些朋友也曾经想过如何快捷安全迁移数据,迁移数据可能有多种原因,一种是想增加一块硬盘,把原来一些空间不够的分区迁移过来;另一种是硬盘复制,旧的硬盘容量可能太小了,又或者已经出现了问题,想用新的硬盘代替。葱头就分别举例说明怎样迁移数据,具体方法可能和你的硬盘的实际情况有所不同,这里只是作一个指引。<br /><br />无论是那种方法,都必须先将新硬盘装上并让系统正确识别。为了不用设硬盘跳线(硬盘缺省为Master),这里举例安装一个新的IDE硬盘到IDE1接口,即与旧硬盘使用不同的数据线,系统识别为ad2;如果你想和旧硬盘接在同一数据线线上,即IDE0接口,则必须将跳线设为client,系统识别为ad1。<br />1、关机,将新硬盘装上,重新开机。<br />2、开机后查看是否系统是否已经识别到新硬盘了:<br /><br />hpserver#&nbsp;dmesg&nbsp;|&nbsp;grep&nbsp;ad2<br />成功的话会显示<br />ad2:&nbsp;9765MB&nbsp;&lt;Maxtor&nbsp;91024U4&gt;&nbsp;&nbsp;at&nbsp;ata1-master&nbsp;UDMA33<br />等信息,否则你要检查是否接错线,或者硬件兼容问题。<br /><br />新硬盘已经安装成功,下面举例说一下两种数据迁移的方法。<br /><br />一、增加一个硬盘,将原来硬盘/var数据转移到新硬盘<br /><br />在系统已经建立之后,FreeBSD不能像PQMagic那样自由调整分区空间而不损 坏分区数据,所以,如果/var空间已经不够,需要增加一块硬盘增加空间,原来的数据也必须迁移过来。<br />2、对新硬盘进行分区<br />可以使用sysinstall或者命令行方式分区。虽然fdisk有更多灵活性,但我建议还是采用sysinstall较好。分区完之后再用sysinstall里面的Label建立文件系统相关文件系统。<br />3、将文件系统挂载到/mnt<br /><br />hpserver#&nbsp;mount&nbsp;/dev/ad1s1e&nbsp;/mnt<br />4、将数据迁移,这里也有两种方法,一种是使用tar,另一种是使用dump,我分别介绍,大家可以根据需要而选择备份方式。<br />(1)&nbsp;使用tar备份并还原数据。<br />hpserver#&nbsp;cd&nbsp;/var<br />hpserver#&nbsp;tar&nbsp;cf&nbsp;-&nbsp;*&nbsp;|&nbsp;(cd&nbsp;/mnt;&nbsp;tar&nbsp;xf&nbsp;-)<br />(2)&nbsp;使用dump备份并用restore还原数据。就我个人而言,我推荐使用这种方法,因为我曾经试过用tar备份var目录的时候,出现了错误并自动停止,我分析了一下原因,一些正在使用的文件或者临时文件可能不能备份,但dump不是以文件为单位,而是而block为单位的,应该不存在这样的情况,所以这是我推荐使用dump和restore的原因。<br /><br />hpserver#&nbsp;cd&nbsp;/mnt<br />hpserver#&nbsp;dump&nbsp;-f-&nbsp;/var&nbsp;|&nbsp;restore&nbsp;-f-&nbsp;-r<br />在过程中和结束会出现类似以下信息:<br />DUMP:&nbsp;Date&nbsp;of&nbsp;this&nbsp;level&nbsp;0&nbsp;dump:&nbsp;Wed&nbsp;Jan&nbsp;14&nbsp;23:44:35&nbsp;2004<br />DUMP:&nbsp;Date&nbsp;of&nbsp;last&nbsp;level&nbsp;0&nbsp;dump:&nbsp;the&nbsp;epoch<br />DUMP:&nbsp;Dumping&nbsp;/dev/ad0s1e&nbsp;(/var)&nbsp;to&nbsp;standard&nbsp;output<br />DUMP:&nbsp;mapping&nbsp;(Pass&nbsp;I)&nbsp;<br />DUMP:&nbsp;mapping&nbsp;(Pass&nbsp;II)&nbsp;<br />DUMP:&nbsp;estimated&nbsp;305&nbsp;tape&nbsp;blocks.<br />DUMP:&nbsp;dumping&nbsp;(Pass&nbsp;III)&nbsp;<br />DUMP:&nbsp;dumping&nbsp;(Pass&nbsp;IV)&nbsp;<br />DUMP:&nbsp;DUMP:&nbsp;361&nbsp;tape&nbsp;blocks<br />DUMP:&nbsp;finished&nbsp;in&nbsp;less&nbsp;than&nbsp;a&nbsp;second<br />DUMP:&nbsp;DUMP&nbsp;IS&nbsp;DONE<br />5、有一点提醒的是,你要确保备份后没有数据写入原来的/var,否则,这些数据没有备份到新分区中。结束后别忘了检查一下结果,并卸载/mnt。<br /><br />hpserver#&nbsp;ls&nbsp;/mnt<br />hpserver#&nbsp;umount&nbsp;/mnt<br />6、编辑/etc/fstab文件,将原来指向/var的文件系统改为/dev/ad1s1e,重新启动就可生效。<br /><br />二、硬盘复制<br /><br />如果旧的系统盘出现了一些毛病,或者容量不够,你想更换一个新硬盘,那可以把旧硬盘数据复制到新硬盘,然后把旧硬盘摘下。按照上面的步骤,我们假定已经将硬盘安装好。<br />这里有一个小tips,就是先记下旧硬盘文件系统所对应的mount点,新硬盘分区次序按照旧的一样,这样免去我们下面容易混淆的步骤,我们查看/etc/fstab对照就知道了。不然搞了几下,自己都忘记了ad2s1e到底是用来挂载那个目录的。<br />1、使用sysinstall把新硬盘分区,设置好MBR,并一一对照原来的次序创建文件系统,假设原来的文件系统/dev/ad0s1g&nbsp;对应/usr,那你新硬盘/dev/ad2s1g就用来做/usr,原来的文件系统/dev/ad0s1e&nbsp;对应/var,那你新硬盘/dev/ad2s1e就用来做/var。按M分别清空所有文件系统的mount点,因为我们还没有建立临时的mount的目录,不清空会和系统原来的mount冲突的。<br /><br />2、创建临时的目录用来作临时mount点并挂载这些文件系统。<br /><br />hpserver#&nbsp;cd&nbsp;/mnt<br />hpserver#&nbsp;mkdir&nbsp;root<br />hpserver#&nbsp;mkdir&nbsp;usr<br />hpserver#&nbsp;mkdir&nbsp;var<br />用cat&nbsp;/etc/fstab查看原来的文件系统的对应关系,我们只要看最后面的一个字母就可以了,这样避免我们忘记了什么对应什么,这就是我刚才为什么让新硬盘的文件系统的名称对应以前的原因。<br />hpserver#&nbsp;mount&nbsp;/dev/ad2s1a&nbsp;/mnt/root<br />hpserver#&nbsp;mount&nbsp;/dev/ad2s1g&nbsp;/mnt/usr<br />hpserver#&nbsp;mount&nbsp;/dev/ad2s1e&nbsp;/mnt/var<br />3、复制硬盘最好用dump,尽量不用tar,因为你备份根分区的时候,如果不加参数排除一些目录,它会把全部东西备份到你新的分区的,这肯定不是我们想看到的。<br /><br />hpserver#&nbsp;cd&nbsp;/mnt/root<br />hpserver#&nbsp;dump&nbsp;-f-&nbsp;/&nbsp;|&nbsp;restore&nbsp;-f-&nbsp;-r<br />hpserver#&nbsp;cd&nbsp;/mnt/var<br />hpserver#&nbsp;dump&nbsp;-f-&nbsp;/var&nbsp;|&nbsp;restore&nbsp;-f-&nbsp;-r<br />hpserver#&nbsp;cd&nbsp;/mnt/usr<br />hpserver#&nbsp;dump&nbsp;-f-&nbsp;/usr&nbsp;|&nbsp;restore&nbsp;-f-&nbsp;-r<br />4、到这里为止,数据备份和还原已经结束,检查一下有没有错漏,然后分别umount这些分区。<br /><br />hpserver#&nbsp;umount&nbsp;/mnt/root<br />hpserver#&nbsp;umount&nbsp;/mnt/usr<br />hpserver#&nbsp;umount&nbsp;/mnt/var<br />5、最后,关机,摘掉原来的硬盘,把新硬盘挂到旧硬盘原来的位置,这步不要省略了,如果你不换位置,系统还是认为新硬盘是ad2,由于你的/etc/fstab里面是对应ad0的,所以启动会找不到/usr和/var等文件系统。启动看看,如果没有什么异常,那恭喜你,数据迁移已经成功,否则,请再看看有什么操作错误或者忘记做哪一步了。无论怎样,都别那么着急把旧硬盘内容清空,最好让新的系统运行几天观察有什么异常再动手。<br /><br />切记,数据迁移的是一件比较危险的事情,操作过程中不能有差错,否则可能导致你原来的数据丢失,所以必须非常谨慎。<br />&nbsp;</p>
頁: [1]
查看完整版本: FreeBSD 数据备份和迁移方法