dd 与 dd 流水线:哪个更好?

dd 与 dd 流水线:哪个更好?

这里我在评论中看到,有人dd在管道中使用复制功能时获得了更高的性能。例如:

dd if=in | dd of=out

代替

dd if=in of=out

它真的更快吗?为什么?另外:他谈到了对称和非对称复制。有人能更好地解释一下吗?

答案1

这个问题很有趣,所以我做了一些测试。从我的测试来看,使用管道在同一磁盘内复制的速度实际上要慢得多(速度明显慢得多,需要 40 秒,而不是 30 秒,重复多次)。

当我在磁盘(在本例中是硬盘和 USB 密钥)之间执行类似操作时,时间上没有明显差异。

因此我得出结论,对于一般情况来说,它不会更快,甚至可能更慢,但是在某些特殊情况下它可能会更快。

我认为作者所说的对称/非对称是指同步/异步 - 即在“dd if=in of=out”的情况下,它读取数据,当完成此操作(对于一个块)时,它会写入数据,并重复此过程直到完成此过程。在第二个例子中,他推断他读取了数据,然后在读取时使用流将数据写入第二个磁盘。这是合理的 - 虽然我的测试没有证实速度有所提高 - 当然我可以想到很多可以尝试的变体,其中一些可能确实更快 - 虽然我推测使用更大的块大小是提高速度的更好方法。

相关内容