Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux dd 命令深度解析:參數詳解與 10 大實戰場景

編輯:Linux 教學

前言

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 填充

二、 10 大實戰場景

1. 整盤備份與還原

# 備份整盤到另一顆磁碟
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

2. 遠端網路備份(配合 netcat)

# 來源端
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

3. MBR 備份與還原

# 備份前 512 位元組
dd if=/dev/hdx of=/path/to/mbr.img count=1 bs=512

# 還原 MBR
dd if=/path/to/mbr.img of=/dev/hdx

4. 軟碟/光碟鏡像製作

# 軟碟
dd if=/dev/fd0 of=disk.img count=1 bs=1440k

# 光碟 ISO
dd if=/dev/cdrom of=/root/cd.iso

5. 記憶體資料擷取

dd if=/dev/mem of=/root/mem.bin bs=1024

6. 擴充 Swap 空間

# 建立 256MB swap 檔
dd if=/dev/zero of=/swapfile bs=1024 count=262144
mkswap /swapfile
swapon /swapfile
# /etc/fstab 加入:/swapfile swap swap defaults 0 0

7. 磁碟資料銷毀(防資料殘留)

dd if=/dev/urandom of=/dev/hda1
# 執行後該分區無法掛載、建立、複製,資料不可復原

8. 尋找最佳區塊大小(效能調校)

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 值

9. 磁碟讀寫速度測試

# 寫入測試
dd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

# 讀取測試
dd if=/root/1Gb.file bs=64k | dd of=/dev/null
# 依時間計算吞吐量

10. 磁碟修復(磁通量點修復)

dd if=/dev/sda of=/dev/sda
# 讀寫全盤,可修復長期閒置產生的磁通量點,過程安全高效

三、 關鍵注意事項

  • 毀滅性風險:dd 無提示確認,if/of 搞反將導致資料永久遺失,執行前務必三次確認裝置路徑。
  • 區塊大小影響效能:大區塊(如 64k-1M)通常更快,但需配合硬體特性測試。
  • 進度監控:可發送 SIGUSR1 訊號查看進度:kill -USR1 $(pidof dd)(GNU dd 支援)。
  • 壓縮管線:備份大磁碟時建議管線接 gzip/bzip2/xz 節省空間。

結語

dd 是系統管理員手中的核武器,掌握其參數邏輯與實戰模式,能在備份、遷移、測試、取證等關鍵任務中發揮不可替代的作用。謹記:「三思而後 dd,一錯萬年恨。」

Copyright © Windows教程網 All Rights Reserved