Answers:
SSHFS很方便,但是它与rsync或与同步工具的结合不是很好。
最大的问题是SSHFS在很大程度上破坏了rsync的性能优化。特别是对于大文件,当rsync看到文件已被修改时,它将在每一侧计算文件各部分的校验和,以便仅传输已修改的部分。仅当网络带宽明显小于磁盘带宽(通常是这种情况)时,这才是一种优化。但是,对于SSHFS,“磁盘”带宽实际上就是网络带宽,因此rsync必须读取整个文件才能确定要复制的内容。实际上,使用本地副本(就rsync而言,即使其中一方在SSHFS上也是如此),rsync只是复制整个文件。
如果存在许多小文件,则SSHFS也会损害性能。Rsync需要至少检查每个文件的元数据,以确定是否已对其进行修改。使用SSHFS,这需要每个文件进行网络往返。借助SSH上的rsync,双方可以并行工作并批量传输信息,这要快得多。
在访问限制方面,SSHFS需要SFTP访问,而rsync需要具有通过外壳运行代码(特别是rsync程序)的能力。如果用户没有外壳程序帐户,通常可以为帐户提供一个特殊的外壳程序,该外壳程序仅允许运行一些程序,包括sftp-server
和rsync
。请参阅是否需要SCP的外壳?
如果您仅复制新文件,并且文件数量不多,则不会有有意义的性能差异。
挂载文件系统时,SSHFS会建立SSH连接,并保持该连接直到卸载。Rsync每次运行时都会建立一个新连接,但是您可以在单个主连接上使用多路复用功能和背负,以避免每次都进行身份验证。
SSHFS是FUSE文件系统,因此仅支持传统的Unix元数据和ACL。Rsync可以传输扩展属性(您需要使用rsync -aAX
,请注意,普通-a
格式仅保留传统的Unix元数据)。
sshfs
连接,是否会相同?请参阅:unix.stackexchange.com/q/544404/198423 @Gilles
rsync --no-whole-file /mounted/file.tar.gz /home/local/file.tar.gz
。当我rsync
用于此操作时,在计算校验和以仅传输已修改的部分时,是否rsync
应该读取整个文件,这将导致下载完整的数据而不是仅下载其更新的部分?@Gilles