我有一个只能支持 CIFS、AFS、SSH(没有 rsyncd 功能,没有 NFS)的 NAS。
我必须备份非常大的文件(vm 映像),我通常在备份设备上设置一个 rsync 服务器,然后我rsync --inplace
只传输大文件的块级增量。这适用于 rsyncd。
对于 CIFS,它似乎必须先读取所有目标文件和本地文件,然后再将其全部复制(整个内容,而不仅仅是增量).. SSHFS 会更好吗?
还有其他方法可以在没有 rsyncd 的情况下仅移动块增量吗?
我有一个只能支持 CIFS、AFS、SSH(没有 rsyncd 功能,没有 NFS)的 NAS。
我必须备份非常大的文件(vm 映像),我通常在备份设备上设置一个 rsync 服务器,然后我rsync --inplace
只传输大文件的块级增量。这适用于 rsyncd。
对于 CIFS,它似乎必须先读取所有目标文件和本地文件,然后再将其全部复制(整个内容,而不仅仅是增量).. SSHFS 会更好吗?
还有其他方法可以在没有 rsyncd 的情况下仅移动块增量吗?
不,它不会更好
sshfs
。不可能,与本地安装的远程文件系统一样,本地rsync
进程必须读取文件以查看需要复制的内容。为此,必须通过网络传输整个文件。sshfs 对此无济于事;你需要做的是添加一个
-W
选项来告诉 rsync 只传输整个文件,而不是试图找出具体的差异在哪里。您可能还需要删除--inplace
(不确定)。rsync 实际上是为远程操作而设计的,其中每台计算机上都有一个 rsync 实例(或守护程序),每个计算机都有一个快速链接到其磁盘,但 rsync 实例之间的链接很慢。在您的情况下,慢速链接位于“远程”rsync 及其磁盘之间,因此需要一组不同的优化选择。具体来说,rsync 通常默认读取整个源文件和目标文件,因此它可以确定哪些部分需要通过“慢”中间链接传输;在您的情况下,它会减慢它的速度,而不仅仅是盲目地传输整个文件。
此外,请确保您有
-t
选项(或-a
,这意味着-t
),并且没有使用-c
.-c
会让它读取整个文件,看看它是否发生了变化;没有它,它只会查看-t
(和-a
)保留的文件大小和修改时间。