为什么使用 dd 而不是 cp 来创建可启动磁盘?

RUB*_*UÇO 8 iso cp dd

做 iedd bs=4M if=archlinux.iso of=/dev/sdx status=progress oflag=sync或做之间有什么区别cp archlinux.iso /dev/sdx && sync,有理由使用一个而不是另一个吗?(除了 dd 中漂亮的进度条)

Edu*_*ani 9

一个区别是效率,因此是速度。例如,您可以一一获取字节并将它们复制到设备,使用cat

cat archlinux.iso > /dev/sdx
Run Code Online (Sandbox Code Playgroud)

理论上 cat 会独立移动每个字节。这是一个缓慢的过程,尽管在实践中会涉及缓冲区。

有了dd一个好的块大小(通常与物理块大小相关),它会更快。

有了cp这取决于所用的缓冲区大小cp(不是你的控制之下),在路上,其他缓冲区。理论上效率介于cat和之间dd

打个比方:这就像把一个杯子里的东西倒进另一个杯子里。

cat 一次会做一滴。

dd 将使用勺子,您定义勺子有多大(系统限制适用)

cp 会用自己的勺子,你不知道它有多大。

  • 与玻璃的比喻非常好! (2认同)