首頁 > 軟體

dd命令磁碟對拷及備份

2020-06-16 17:19:12

dd命令:convert and copy a file

用法:

dd if=/PATH/FROM/SRC of=/PATH/TO/DEST

bs=#:block size, 複製單元大小;

count=#:複製多少個bs;

磁碟拷貝:

dd if=/dev/sda of=/dev/sdb

備份MBR

dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1

破壞MBR中的bootloader:

dd if=/dev/zero of=/dev/sda bs=256 count=1

兩個特殊裝置:

/dev/null: 資料黑洞;

/dev/zero:吐零

1.做硬碟對拷:

dd if=/dev/sda of=/dev/sdb bs=1024k &

注意:

(1).先改fstab檔案,把LABLE換成對應的  /dev/sda(不改的話,拷完後重新啟動系統不知道從哪塊盤啟動了)

/dev/sda2              /                      ext3    defaults        1 1

/dev/sda5              /data                  ext3    defaults        1 2

/dev/sda1              /boot                  ext3    defaults        1 2

(2).一定要寫bs=1024k,一定要加k, 預設是bytes,不加K或M,是以bytes寫入,

    有可能系統要掛了,至於 也有人寫bs=4M,沒啥區別,最後速度差不多。

(3).加 & 後台進行,因為要用當前的終端來檢視dd進度,如果忘了加 &,可以用Ctrl+z

把dd進程移到後台,再執行 bg 記其後台執行(為了在當前終端檢視進度)。

2.檢視dd完成進度,要不然鬼知道啥時候能dd完成啊

ps -ef|grep dd  //檢視 dd 進程id號,其實上邊命令加&後,己經顯示了。

kill -USR1  id  //檢視 dd 完成進度

100118036480 bytes (100 GB) copied, 1346.94 seconds, 74.3 MB/s

如果想時時檢視進度,可以用下面語句:

watch -n 1 kill -USR1 3730  // 每2秒檢視一次進度

while kill -USR1 3730;do sleep 2;done;  //每2秒檢視一次進度

這種是通過傳送USR1信號的方法,去產生一個標準的IO錯誤,來達到顯示當前COPY進度與COPY速度的目的。

3.如果sdb原來是一個裸盤沒有格式化過,dd可能並不能拷貝superblock資訊,所以盤不能mount起來。

所以只需要進入fdisk介面:

# fdisk /dev/sdb

# w

“write table to disk and exit”,sdb就可以mount起來了,如果是格過的,可能需要fsck一下就可以了

注意:建議不要輕易dd,有可能把系統搞壞,在有把握情況下或資料備份過情況下使用dd

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-03/141749.htm


IT145.com E-mail:sddin#qq.com