![大 rsync——推还是拉?](https://linux22.com/image/40864/%E5%A4%A7%20rsync%E2%80%94%E2%80%94%E6%8E%A8%E8%BF%98%E6%98%AF%E6%8B%89%EF%BC%9F.png)
我即将rsync
在 LAN 上的两台服务器之间启动大型操作。对我来说是不是更好推将文件从一台服务器传输到另一台服务器或拉他们(向后)?
没有什么可以让一个工作,而另一个不工作——我只是想知道是否有理由(也许是速度)做一个而不是另一个。
谁能给我一个充分的理由,或者没有理由做一个而不是另一个?
答案1
算法的工作方式rsync
可以从这里。
该算法识别源文件中与目标文件的某些部分相同的部分,并仅发送无法以这种方式匹配的部分。实际上,该算法可以计算一组差异,而无需将两个文件放在同一台计算机上。当文件相似时,该算法效果最佳,但当文件完全不同时,该算法也能正确且合理高效地运行。
因此,无论您是上传还是下载,都不会产生任何影响,因为该算法适用于源文件和目标文件的校验和。因此,任何文件都可以是源/目标。
我从中找到了一些更有用的信息这里。一些摘录是,
RSync 是一种远程文件(或数据)同步协议。它允许您在两台计算机之间同步文件。通过同步,我的意思是确保文件的两个副本相同。如果存在任何差异,RSync 会检测这些差异并发送这些差异,以便客户端或服务器可以更新其文件副本,以使副本相同。
RSync 能够同步文件,而无需通过网络发送整个文件。当然,在我完成的实现中,除了文件中的任何新数据之外,仅交换了相当于总文件大小约 2% 的数据。新数据必须通过网络逐字节发送。
由于 RSync 的工作方式,它还可以用作增量下载/上传协议,允许您在多个会话中上传或下载文件。如果当前上传或下载失败,您可以稍后恢复。
答案2
该rsync
程序实际上在远程服务器上运行其自身的副本。一旦rsync
在两端运行,它们就会相互协商如何最好地传输所请求的文件。我认为哪个先启动并不重要。
但是,我通常会从离我最近的机器发起传输。这样,如果出现问题,我更有可能监控文件传输进度。如果两台机器都在同一个 LAN 上,那么这个原因就不会成为选择一台机器的理由。
答案3
如果传输使用ADSL线路因为下载或上传时的比特率不同。在这种情况下,选择取决于目标机器的位置。
答案4
对于面向公众的服务器的安全性和备份,从数据备份源拉取通常比推送更好。例如,如果数据源无论如何受到损害(由于黑客攻击),它会将凭据暴露给其备份服务器。此外,拉(而不是推)将备份过程隔离到备份服务器,而不必在每个单独的备份源上维护备份服务。它可能使备份管理变得更容易。我想象一台备份服务器从多个源提取备份,并且所有备份管理都将在一台服务器上完成。
但是,如果是为了执行非关键任务的备份,我更愿意推动其简单性和易用性。我在家里使用推送来备份所有基于 rsync 的个人数据(通过 SFTP/SSH)。