linux下用dd命令拷貝硬碟,複製轉殖及還原硬碟

2021-07-09 05:49:47 字數 2285 閱讀 6189

linux系統如果想做備份還原,使用ghost的時候經常出現問題,後來發現可以直接使用dd命令完成硬碟的轉殖和還原.當拷貝完硬碟後,就可以拿這個硬碟放到其它裝置上跑了。也就是完成了「燒寫」了。

實際操作中,最好使用另乙個系統啟動,如另乙個硬碟的系統,或者用live cd。當然,拷貝當前執行中的系統也是可以的,但不知當前的這個系統還有哪些不確定東西,所以還是不建議。

用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

用dd實現linux硬碟備份

乙個去年的老本,500g硬碟,空間各種捉急,準備遷移到公司的台式電腦上,卻發現linux上遷移環境沒有windows下那麼方便,只能複製整塊硬碟了。從公司拿了一塊1t的硬碟,插入移動硬碟盒 上搞的乙個移動硬碟盒,40元 加電識別,格式化,開始硬碟複製。市面上針對資料備份的軟體不計其數,我們不討論他們...

DD 命令 測速 硬碟

老外喜歡用 dd if dev zero of test bs 64k count 16k conv fdatasync 國人喜歡用 dd if dev zero of test.bin bs 64k count 4k oflag dsync 1.dd if dev zero of test bs ...

DD 命令 測速 硬碟

老外喜歡用 dd if dev zero of test bs 64k count 16k conv fdatasync 國人喜歡用 dd if dev zero of test.bin bs 64k count 4k oflag dsync 1.dd if dev zero of test bs ...