Dd
為什麼使用 dd 而不是 cp 來創建啟動盤?
dd bs=4M if=archlinux.iso of=/dev/sdx status=progress oflag=sync
做 ie或做之間有什麼區別cp archlinux.iso /dev/sdx && sync
,以及使用一個而不是另一個的理由嗎?(除了 dd 中漂亮的進度條)
一個區別是效率,因此是速度。例如,您可以一個一個地獲取字節並將它們複製到設備,
cat
如果它具有理想化的實現或在舊系統中,例如 BSD4:cat archlinux.iso > /dev/sdx
在這些實現
cat
中,將獨立移動每個字節。這是一個緩慢的過程,儘管在實踐中會涉及到緩衝區。請注意,現代cat
實現將讀取塊(見下文)。
cp
它取決於cp
(不受您控制)和其他緩衝區使用的緩衝區大小。效率介於理想化實現cat
和dd
最佳塊大小之間。在實踐中,雖然現代
cat
並且cp
會詢問系統首選的塊大小:st_blksize。請注意,這不一定是最佳塊大小。打個比方:這就像把一個杯子裡的東西倒進另一個杯子裡。
- 理想化
cat
會一次做一滴。dd
將使用勺子,並且您可以準確定義勺子的大小(適用系統限制)cp
現代cat
會使用自己的勺子(stat -f -c %s filename
會告訴你它有多大)。