dd 的用法

dd 是 data duplicator 的簡稱,也就是 data 複製器。

常見的用法為:
$ dd if=/dev/sda1 of=/dev/sda2 bs=4096 conv=noerror

if 為指定 data 的讀取來源。
of 為指定 data 的寫入位置。
bs 為 block size,指定每次讀寫的 data 長度。
conv 為在複製 data 時,可以加入的屬性。

 

實用範例

複製 sda1 的 data 到 sda2:
$ dd if=/dev/sda1 of=/dev/sda2 bs=4096

轉換 sda1 的 data 為 system.img:
$ dd if=/dev/sda1 of=system.img bs=4096

將 system.img 寫到 sda2:
$ dd if=system.img of=/dev/sda2 bs=4096

清空 sda1:
$ dd if=/dev/zero of=/dev/sda1 bs=4096

計算 sda1 的大小(以 MB 為單位)
$ dd if=/dev/sda1 of=/dev/null bs=1M

將 file1 的前 512 bytes 以 0 取代
$ dd if=/dev/zero of=file1 bs=512 count=1 conv=notrunc
notrunc 代表不要將輸出檔案截短,只取代開頭的前 512 bytes,其餘內容不變。

 

進階範例 1

產生一個 4 GB 的 ext4 磁碟,掛載到 /data/ 下或是寫到 /dev/sdb2:

產生 4 GB 的檔案
$ dd if=/dev/zero of=image_4g.img bs=1M count=4096
格式化 image_4g.img
$ mkfs.ext4 image_4g.img
掛載到資料夾
$ mount image_4g.img /data/
或是寫到 /dev/sdb2
$ dd if=image_4g.img of=/dev/sdb2 bs=1M count=4096

 

進階範例 2

已有 test.bin 檔,大小為 3KB,如何以 0xFF 把檔案擴增到 4KB:

產生 1 KB 的檔案,內容全為 0xFF
$ dd if=/dev/zero ibs=1024 count=1 | tr "\000" "\377" > padding_1kb.bin
(tr 指令可以替換指令,把 0x00 換成 0xFF,上述的 000 及 377 是 8 進制表示法。)
把 padding_1kb.bin 附加到 test.bin
$ cat padding_1kb.bin >> test.bin

 

 


Reference

dd 指令教學

How to pad a file with "FF" using dd?

文章標籤
全站熱搜
創作者介紹
創作者 silverwind1982 的頭像
silverwind1982

<span style="font-size: 16pt; color: blue">拾人牙慧</span>

silverwind1982 發表在 痞客邦 留言(0) 人氣(1,157)