2021-05-12 14:32:11
dd命令磁碟對拷及備份
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
相關文章