dd
是 Linux 中非常強大的低階資料處理工具,常用於磁碟備份、映像製作、資料轉換等。以下是完整的說明與範例:dd if=<來源> of=<目的> [參數...]
dd if=/dev/zero of=empty_100MB.bin bs=1M count=100
dd if=/dev/urandom of=random_10MB.bin bs=1M count=10
dd if=/dev/zero of=sparse_1GB.img bs=1 count=0 seek=1G
dd if=/dev/sda of=backup.img bs=4M status=progress
dd if=backup.img of=/dev/sda bs=4M status=progress
dd if=ubuntu.iso of=/dev/sdb bs=4M status=progress
dd if=/dev/zero of=testfile bs=1G count=1 conv=fdatasync
dd if=testfile of=/dev/null bs=1G
dd if=/dev/zero bs=4M count=250 iflag=fullblock | ssh deltawen@192.168.99.7 "dd of=/dev/shm/testfile bs=4M conv=fdatasync"
這串指令做了以下事情:
/dev/shm/testfile
(RAM-based filesystem)dd if=/dev/zero bs=4M count=250 iflag=fullblock
if=/dev/zero
:讀取來源資料,全都是零值bs=4M
:每個 block 是 4MBcount=250
:共產生 250 個 blocks → 4MB × 250 = 1GBiflag=fullblock
:這很關鍵,確保每次讀滿 block(避免 partial read 警告)iflag=fullblock
,有可能只讀到部分資料(例如 32KB),造成傳送失敗。| ssh deltawen@192.168.99.7 ...
dd of=/dev/shm/testfile bs=4M conv=fdatasync
of=/dev/shm/testfile
:寫入到遠端 RAM disk
bs=4M
:一次寫入 4MB chunk
conv=fdatasync
:確保資料 flush 到裝置(在 /dev/shm
中,就是記憶體)
fdatasync
確保寫入程序完整結束,可作為資料一致性保證