Linux command – dd

Loading

dd if="input_file" of="outptu_file" bs="block_size" count="number"

參數:
if : 就是 input file ,也可以是裝置喔.
of : 就是 output file ,也可以是裝置.
bs : 規劃的一個 block 的大小,如果沒有設定時,預設是 512 bytes
count : 多少次個 bs 的意思.

範例 1:將 /etc/passwd 備份到 /tmp/passwd.back 當中

[root@benjr ~]# dd if=/etc/passwd of=/tmp/passwd.back
3+1 records in
3+1 records out
[root@benjr ~]# ll /etc/passwd /tmp/passwd.back
-rw-r–r– 1 root root 1746 Aug 25 14:16 /etc/passwd
-rw-r–r– 1 root root 1746 Aug 29 16:57 /tmp/passwd.back

仔細的看一下,我的 /etc/passwd 檔案大小為 1746 bytes,因為我沒有設定 bs ,所以預設是 512 bytes 為一個單位,因此,上面那個 3+1 表示有 3 個完整的 512 bytes,以及未滿 512 bytes 的另一個 block 的意思啦!

範例 2:備份 /dev/hda 的 MBR

[root@benjr ~]# dd if=/dev/hda of=/tmp/mbr.back bs=512 count=1
1+0 records in
1+0 records out

整顆硬碟的 MBR 存放在第一個 sector 的 512 bytes,因此,我可以利用這個方式來將 MBR 內的所有資料都備份下來.

範例 3:將整個 /dev/hda1 partition 備份下來.

[root@benjr ~]# dd if=/dev/hda1 of=/some/path/filenaem

這樣的用法就類似 Ghost 的功能,可以將整個 partition 的資料備份下來,但是要注意的是 of 存放的位置不能在 if=/dev/hda1 中,否則怎麼讀也讀不完.再加上 #gzip 壓縮就是一個很好的備份方式.

範例 4:測試硬碟速度
測試硬碟讀(READ)速度

[root@benjr ~]# sync; time `dd if=/dev/sda of=/dev/null bs=1M count=2048`
2048+0 records in
2048+0 records out
real 0m15.567suser 0m0.009ssys 0m1.326s

上面的意思為 1M Bytes 的資料傳送 2048 次( 1M * 2048 = 2048M )需要 15.567 sec.所以 2048M / 15.567 Sec 為每一秒硬碟傳送了 131 M Bytes 資料量.不想自己計算可以用 #hdparm -t /dev/sda 取代.效果是一樣的.

測試硬碟寫(WRITE)速度

[root@benjr ~]# sync; time `dd if=/dev/zero of=/dev/sda bs=1M count=2048 && sync`

讀跟寫就差在 if 和 of 不同.

沒有解決問題,試試搜尋本站其他內容

4 thoughts on “Linux command – dd

  1. 自動引用通知: Linux – File | Benjr.tw

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料