首先会想到dd命令.
但,,
1,若是小硬盘还好,上T的大硬盘这样做肯定不明智;
2,况且dd是在硬件层面的拷贝,前面的MBR也会随之恢复到另一个盘,若源硬盘是100G,目标盘是200G,又会出问题,200G的硬盘由于被覆盖写入了100G硬盘的MBR导致只可用100G,更何况重写MBR相当的麻烦;
所以最好不要用类似 dd if=/dev/sda of=/dev/sdb 的方式来备份至另一硬盘.
这里推荐用tar 的方式拷贝.
首先参照fdisk -l 的显示将目标硬盘用fdisk跟源硬盘一样分区,每个分区的起始柱更结束柱都能看到,当然也可以根据需要自己定义分区大小;
其中,swap 分区在fdisk 中新建好分区之后(也就是分配好了分区好之后)用t选项指定ID为82即可,若是fat32则为b;
分完以后更新分区表(或重启,肯定前者更明智):
# partprobe
再用mkfs格式化.(源硬盘的分区格式可用#df -T 查看)
#mkfs -t ext3 /dev/sdb1
随后就可逐个分区将源硬盘分区备份至目标硬盘分区:
# mkdir /mnt/sda1 /mnt/sdb1 # mount /dev/sda1 /mnt/sda1 # mount /dev/sdb1 /mnt/sdb1 # cd /mnt/sda1 # tar -cpv . | tar -xpC /mnt/sdb1
当然有人会说这样麻烦,直接dd if=/dev/sda1 of=/dev/sdb1,这样也不是说不可,但是,,,
1,要是一个比较大的分区无谓的拷贝空数据不是聪明的做法;
2,tar在拷贝恢复的时候顺便解决了碎片问题,所以这样对系统的拷贝来说个人是十分推荐的.(尽管对于linux分区格式来说不用过多担心磁盘碎片的问题)
对于备份恢复后加载swap分区的错误:“ read swap header failed:invaild argument”.
# mkswap /path/to/swap ## eg: mkswap /dev/sda4