cp 或 rsync,cp 真的值得吗?

cp 或 rsync,cp 真的值得吗?

我希望这不算是一个没有真正答案的问题,因为我似乎找不到在几乎所有情况下使用cp(1)over 的好理由。rsync(1)人们通常应该偏爱rsynccp?它们的使用有什么好的指南吗?

  • rsync:传输差异,它可以使用压缩,可以远程(安全地)使用,即使在传输单个大文件期间,也可以在中断的情况下重新启动。 '

  • cp: 也许只是使用起来更简单?它比 rsync 快吗?

答案1

cp是 coreutils 的一部分,因此它无处不在。此外,它主要设计用于在一台计算机内复制文件。

rsync不是 coreutils 的一部分,即使在默认环境中它也不存在。此外,它主要设计用于通过网络传输文件。与 coreutils 相比,还rsync具有更多的依赖项,但是这种差异没有多大意义。

PS:顺便说一句,CPU 使用率在嵌入式系统上仍然很重要。

答案2

您不想rsync对每个复制操作使用的主要原因是因为rsync有计算开销。在数据传输实际开始之前,rsync扫描所有文件。然后在每个文件之前进行比较。即使 2012 年出现了快速 CPU,这种开销也并非微不足道。我一直在进行此类传输,并且在相当大的服务器上,一旦开始处理大量数据,开销可能会非常耗时。

我并不是说不要使用rsync,根本不是,rsync任何时候使用都可以节省一些传输时间。只是不要使用rsyncwhencp可以完成同样的事情。

我通常做的,首先使用常规复制方法带来数据。然后rsync进行后续更改,此时可以利用这些差异。

答案3

我希望cp少用一点中央处理器在本地复制时,因为它不使用差异,而rsync可以减少当使用差异时。应避免在本地进行压缩,因为无论如何您都必须读取和写入整个文件/差异,并且需要额外的计算。

答案4

除了较大或不存在差异的情况下的开销之外,rsync似乎没有等效的cp --reflink=always,如果在支持它的文件系统中进行复制,它可以节省大量数据(它创建写时复制副本,因此原始数据和副本之间的共同数据(当然,最初是所有数据)仅存储一次)。 rsync然而,更擅长更新中CoW 复制,使用--inplace.

相关内容