Answers:
Cp
在所有文件中循环进行打开-读取-关闭-打开-写入-关闭。因此,从一个地方读取并向另一个地方写入会完全交错。Tar|tar
可以在单独的进程中进行读取和写入,此外还tar
使用多个线程“一次”读取(和写入)多个文件,从而有效地使磁盘控制器可以一次获取,缓冲和存储许多数据块。总而言之,它tar
允许每个组件有效地工作,同时cp
将问题分解成分散的,效率低下的小块。
cp
实现都是如此吗?我们怎么知道那是真的?而且为什么会cp
以这种低效的方式编写?任何文件复制的教科书实现都一次读取一个n个字节的缓冲区,然后在读取另外n个字节之前将它们写入磁盘。但是您是说cp
总是在写入整个副本之前先读取整个文件吗?