![在没有 rsyncd 选项的情况下,使用 rsync 而不是 SSHFS 或 CIFS 作为远程存储库是否更好?](https://linux22.com/image/656103/%E5%9C%A8%E6%B2%A1%E6%9C%89%20rsyncd%20%E9%80%89%E9%A1%B9%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%EF%BC%8C%E4%BD%BF%E7%94%A8%20rsync%20%E8%80%8C%E4%B8%8D%E6%98%AF%20SSHFS%20%E6%88%96%20CIFS%20%E4%BD%9C%E4%B8%BA%E8%BF%9C%E7%A8%8B%E5%AD%98%E5%82%A8%E5%BA%93%E6%98%AF%E5%90%A6%E6%9B%B4%E5%A5%BD%EF%BC%9F.png)
我有一个 NAS,它只支持 CIFS、AFS、SSH(没有 rsyncd 功能,没有 NFS)。
我必须备份非常大的文件(虚拟机映像),我通常在备份设备上设置一个 rsync 服务器,然后只rsync --inplace
传输大文件的块级增量。这在 rsyncd 中运行良好。
使用 CIFS 时,似乎必须在复制之前读取所有目标文件和本地文件全部结束(整个过程,而不仅仅是增量)..使用 SSHFS 会更好吗?
还有其他方法可以在不使用 rsyncd 的情况下仅移动块增量吗?
答案1
sshfs 对此无济于事;您需要做的是添加选项,-W
告诉 rsync 只传输整个文件,而不试图找出具体差异在哪里。您可能还需要删除--inplace
(不确定)。
rsync 实际上是为远程操作而设计的,其中每台计算机上都有一个 rsync 实例(或守护进程),每个实例都与其磁盘建立快速链接,但 rsync 实例之间建立慢速链接。就您而言,慢速链接位于“远程”rsync 与其磁盘之间,因此需要一组不同的优化选择。具体来说,rsync 通常默认读取整个源文件和目标文件,以便它能够确定哪些部分需要通过“慢速”中间链接进行传输;就您而言,这比盲目传输整个文件更慢。
另外,请确保您有-t
选项(或-a
,这意味着-t
),并且不是使用-c
.-c
会使它读取整个文件以查看它是否完全改变了;没有它,它只会查看文件大小和修改时间,然后-t
(和-a
)保留。
答案2
不,使用 不会更好sshfs
。它不可能,因为对于本地安装的远程文件系统,本地rsync
进程必须读取文件才能查看需要复制的内容。为此,必须通过网络传输整个文件。