cp或rsync,cp真的值得吗?


8

我希望这不会算作一个问题,没有一个真正的答案,因为我似乎无法找到一个很好的理由使用cp(1)rsync(1)在几乎所有情况。如果一个典型的青睐rsynccp?有什么好的使用指南吗?

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

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


4
有时,比起简单地盲目复制字节,比较的开销要大得多。
bahamat 2012年

具有更好答案的相同问题:serverfault.com/questions/43014/…–
丹尼尔(Daniel)

Answers:


9

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

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

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


6

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

我并不是说不要使用rsync,一点也不要使用,这样rsync可以节省一些传输时间。只是不使用rsync何时cp可以完成相同的事情。

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


鉴于我们的处理器今天有多么强大,要付出很大的代价吗?
联盟号

3
大是主观的,并且会根据文件数与数据大小与IO的变化而变化。我的主要观点是,无论今天的处理器如何,它都并非微不足道。要记住今天的处理器的一件事,仍然必须处理今天的数据。
JM Becker 2012年

同意 CPU不能在真空中变得更快。我们拥有GHz CPU的最好原因之一是千兆位网络:速度较慢的CPU根本无法保持足够大的I / O管道。正如我们所知道的,计算机往往具有很好的平衡性。拿走一些CPU电源,一些I / O容量将变为空闲状态。增加I / O需求,CPU最终会空转更多,等待I / O。
沃伦·杨

3

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


因此,这全都归结为CPU成本或I / O成本
Soyuz

2
@soyuz,对于已更改的数据(相对于其他数据)而言是正确的。diff越小,则越rsync优选。但是,当他们没有区别时,rsync只会带来开销而没有额外的好处。
JM Becker

@TechZilla我想你的意思是,没有什么共同之处。如果没有差异,则rsync会尽早结束,因为没有要复制的内容,因此更受欢迎。
2012年

@Izkata:至少有两种方法使rsync两个相同文件的I / O开销比瞎子要大cp:修改时间变了。您必须提供--size-only解决此问题的方法。我能看到的唯一的其他方法是rsync依靠文件系统校验和,但是对于大多数文件系统来说,它们并不是身份的统计预测值。
沃伦·杨

3

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.