linux系統的 " ghost " 備份

linux系統下的硬盤複製方法

首先將要複製和被複制的硬盤均連接到linux系統,然後


用fdisk -l查看當前所有分區信息(記得用root,否則執行了啥也看不到),如:

Device Boot Start End Blocks Id System


/dev/sdb1 2048 1002047 500000 83 Linux


/dev/sdb2 1002048 12002047 5500000 83 Linux


/dev/sdb3 12002048 13002047 500000 83 Linux


/dev/sdb4 13002048 15002047 1000000 83 Linux


上面是我爲了方便寫文檔而做的分區,可以看到Blocks十分工整,那是故意而爲之的。


全盤拷貝的命令:

dd if=/dev/sdb of=/dev/sdc


分區拷貝:

dd bs=512 count=[fdisk命令中最大的end數+1] if=/dev/sdb of=name.img


以上爲例:

dd bs=512 count=15002048 if=/dev/sdb of=ghost_linux_latelee.img


由於ghost_linux_latelee.img會很大,可以在拷貝時將其壓縮:

dd bs=512 count=15002048 if=/dev/sdb | gzip -9 > ghost_linux_latelee.img.gz


上面所做的,就是傳說的系統“備份”,或叫“系統克隆”。


對應的,有系統恢復的操作。命令如下:

dd if=ghost_linux_latelee.img of=/dev/sda


如果是壓縮包,則命令爲:


gzip -c -d ghost_linux_latelee.img.gz | dd of=/dev/sda


在上面的拷貝過程中,並不知道拷貝了多少,只有最終結束時才顯示出時間、拷貝速度。爲了查看進度,可以在另一個終端輸入(記得用root):


watch -n 5 killall -USR1 dd


(注:killall並不是傳說中把進程kill掉,而是發送一個指定的信號到指定的進程)


之後,就能執行dd的終端看到進度了,如:


58299+0 records in

58298+0 records out

29848576 bytes (30 MB) copied, 4.67728 s, 6.4 MB/s

161403+0 records in

161402+0 records out

82637824 bytes (83 MB) copied, 9.69359 s, 8.5 MB/s

238651+0 records in

238650+0 records out

122188800 bytes (122 MB) copied, 14.7105 s, 8.3 MB/s


備註:用dd的方式,得到的鏡像文件十分龐大——取決於所要做的系統的大小。比如,拷貝4GB的分區,真的就是拷貝4GB,即使是用gzip壓縮,也壓縮不了多少,文件依然很大。


另外dd的方式也消除了我之前的擔心,因爲現在的Linux發行版的分區使用硬盤uuid作爲標識,而不是/dev/sda1這種格式,據說uuid更好。但用dd拷貝,竟然連硬盤的uuid也一一拷貝,毫無變化,這的確讓我吃驚。不過,目前看沒什麼時間研究dd了。


PS:使用dd命令,可以讀取硬盤的mbr扇區,示例如下:

dd if=/dev/sdb of=mbr.bin bs=512 count=1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章