dd 是 Linux/UNIX 底層資料複製與轉換的瑞士刀。以區塊為單位讀寫,支援轉換、跳過、截斷等操作,廣泛用於磁碟備份、鏡像建立、效能測試、資料銷毀等場景。本文系統整理核心參數,並以 10 大實戰案例演示進階用法。
| 參數 | 說明 | 單位後綴 |
|---|---|---|
if=FILE | 輸入檔案(預設 stdin) | — |
of=FILE | 輸出檔案(預設 stdout) | — |
ibs=BYTES | 讀取區塊大小 | b=512, c=1, k=1024, w=2, M=1024k, G=1024M |
obs=BYTES | 寫入區塊大小 | |
bs=BYTES | 同時設定讀寫區塊(等同 ibs+obs) | |
cbs=BYTES | 轉換緩衝區大小 | 同上 |
skip=BLOCKS | 輸入端跳過區塊數 | 區塊大小=ibs |
seek=BLOCKS | 輸出端跳過區塊數(適用磁帶/磁碟) | 區塊大小=obs |
count=BLOCKS | 僅複製指定區塊數 | 區塊大小=ibs |
conv=CONV[,CONV...] | 轉換選項見下表 | — |
conv 轉換選項ascii/ebcdic/ibm:字碼轉換block/unblock:固定長度記錄轉換(配合 cbs)lcase/ucase:大小寫轉換swab:交換每對位元組noerror:讀錯繼續notrunc:不截斷輸出檔sync:不足區塊以 NUL 填充# 備份整盤到另一顆磁碟
dd if=/dev/hdx of=/dev/hdy
# 備份到映像檔(可配合 gzip 壓縮)
dd if=/dev/hdx | gzip > /path/to/image.gz
# 還原
dd if=/path/to/image of=/dev/hdx
gzip -dc /path/to/image.gz | dd of=/dev/hdx
# 來源端
dd if=/dev/hda bs=16065b | netcat 1234
# 目的端(接收並寫入 /dev/hdc)
netcat -l -p 1234 | dd of=/dev/hdc bs=16065b
# 目的端壓縮存檔
netcat -l -p 1234 | bzip2 > partition.img
netcat -l -p 1234 | gzip > partition.img
# 備份前 512 位元組
dd if=/dev/hdx of=/path/to/mbr.img count=1 bs=512
# 還原 MBR
dd if=/path/to/mbr.img of=/dev/hdx
# 軟碟
dd if=/dev/fd0 of=disk.img count=1 bs=1440k
# 光碟 ISO
dd if=/dev/cdrom of=/root/cd.iso
dd if=/dev/mem of=/root/mem.bin bs=1024
# 建立 256MB swap 檔
dd if=/dev/zero of=/swapfile bs=1024 count=262144
mkswap /swapfile
swapon /swapfile
# /etc/fstab 加入:/swapfile swap swap defaults 0 0
dd if=/dev/urandom of=/dev/hda1
# 執行後該分區無法掛載、建立、複製,資料不可復原
dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.file
dd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file
dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file
dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file
# 比較輸出的執行時間,找出最快 bs 值
# 寫入測試
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000
# 讀取測試
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
# 依時間計算吞吐量
dd if=/dev/sda of=/dev/sda
# 讀寫全盤,可修復長期閒置產生的磁通量點,過程安全高效
dd 無提示確認,if/of 搞反將導致資料永久遺失,執行前務必三次確認裝置路徑。SIGUSR1 訊號查看進度:kill -USR1 $(pidof dd)(GNU dd 支援)。gzip/bzip2/xz 節省空間。dd 是系統管理員手中的核武器,掌握其參數邏輯與實戰模式,能在備份、遷移、測試、取證等關鍵任務中發揮不可替代的作用。謹記:「三思而後 dd,一錯萬年恨。」