远程安装的sshfs上的rsync与本地的rsync之间的区别?


12

如果我将远程主机(ssh://)作为源/目标运行rsync或使用本地路径通过sshfs共享安装目录,有什么区别吗?

在不使用任何开关的情况下,在安全性或复制速度方面是否可能存在差异,只需使用rsync存档模式和远程主机路径(ssh)。sshfs的安装方式与源和目的地相同(无密码更改,仅默认设置)。

Answers:


17

SSHFS很方便,但是它与rsync或与同步工具的结合不是很好。

最大的问题是SSHFS在很大程度上破坏了rsync的性能优化。特别是对于大文件,当rsync看到文件已被修改时,它将在每一侧计算文件各部分的校验和,以便仅传输已修改的部分。仅当网络带宽明显小于磁盘带宽(通常是这种情况)时,这才是一种优化。但是,对于SSHFS,“磁盘”带宽实际上就是网络带宽,因此rsync必须读取整个文件才能确定要复制的内容。实际上,使用本地副本(就rsync而言,即使其中一方在SSHFS上也是如此),rsync只是复制整个文件。

如果存在许多小文件,则SSHFS也会损害性能。Rsync需要至少检查每个文件的元数据,以确定是否已对其进行修改。使用SSHFS,这需要每个文件进行网络往返。借助SSH上的rsync,双方可以并行工作并批量传输信息,这要快得多。

在访问限制方面,SSHFS需要SFTP访问,而rsync需要具有通过外壳运行代码(特别是rsync程序)的能力。如果用户没有外壳程序帐户,通常可以为帐户提供一个特殊的外壳程序,该外壳程序仅允许运行一些程序,包括sftp-serverrsync。请参阅是否需要SCP的外壳?

如果您仅复制新文件,并且文件数量不多,则不会有有意义的性能差异。

挂载文件系统时,SSHFS会建立SSH连接,并保持该连接直到卸载。Rsync每次运行时都会建立一个新连接,但是您可以在单个主连接上使用多路复用功能和背负,以避免每次都进行身份验证。

SSHFS是FUSE文件系统,因此仅支持传统的Unix元数据和ACL。Rsync可以传输扩展属性(您需要使用rsync -aAX,请注意,普通-a格式仅保留传统的Unix元数据)。


例如,我在挂载的SSHFS目录上只有一个压缩文件,然后将该文件复制到本地目录。后来,该文件在安装的目录上更新,我只想使用将其更新的部分复制到本地目录中rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz。当我rsync用于此操作时,在计算校验和以仅传输已修改的部分时,是否rsync应该读取整个文件,这将导致下载完整的数据而不是仅下载其更新的部分?@Gilles
alper19年

1
@alper在sshfs上使用rsync时,rsync必须读取整个文件。它不知道需要更新什么。无法通过仅传输校验和来进行优化,因为无法在服务器上计算校验和。
吉尔斯(Gilles)'“ SO-别再作恶了”

如果目标位置是已安装的文件夹而不是sshfs连接,是否会相同?请参阅:unix.stackexchange.com/q/544404/198423 @Gilles
alper 19'Sep

4

要回答您的主要问题:是的,存在差异。通过sshfs现有的连接,可以通过安全通道访问远程文件,而通过ssh可以使用rsync,则可以建立该安全通道以与远程rsync实例进行通信

回答您的第二个问题:ssh上的rsync对于大多数(如果不是全部)实例,将更快,因为远程系统上的rsync在查找不需要同步的文件时提供了更多的智能,但主要是因为它与您的文件并行运行本地rsync收集该信息。

两种方法的安全性是假设ssh参数(键长,算法)的相似配置相同。源系统和目标系统的默认值是什么,取决于这些系统上发行版的组合。

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.