首先會想到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
