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”