我知道 rsync 用途广泛,所以我只是想知道在我的情况下使用它的最佳方法是什么......即:
工作站上大约 700GB 的项目(位于具有各种子目录的单个文件夹中project/
),我通过 SSH 连接到该工作站进行处理和分析。该工作站安装了一个我无法直接访问的 NFS 共享。是否可以使用rsync的增量功能来对项目进行增量备份?
我已经在使用 rsnapshot 进行备份,但我希望有一个简单的 rsync 命令可以让我对项目进行增量复制。它变化很小,因此增量副本确实会减少带宽。
我努力了
$ rsync --no-whole-file -rv project/ /nfs/destination/project/
但这不起作用...我有一种感觉我没有正确使用它。
答案1
增量功能rsync
仅适用于两个不同的主机之间。
这是网络速度和文件 IO 之间的权衡,这会导致两台主机既读取整个文件,又复制和写入不同的部分。假设一次读取和写入比两次读取和一些写入更快,那么在同一主机上的文件的两个副本之间采用增量算法是没有意义的。
理论上,您可以尝试使用rsync
如下命令来欺骗它正在通过网络运行:
rsync -rv project/ localhost:/nfs/destination/project/
但您会发现主机最终读取了下面的每个文件project/
以及下面的目标文件/nfs/destination/project/
以确定差异。此时您可能已经完整复制了一个文件。
避免完整文件写入的唯一捷径是当源版本和目标版本上具有相同的文件时间和文件大小时。
一种选择是查看 NFS 服务器的管理员是否会为您提供rsync
可以连接的服务。 (rsyncd
是 Linux/Unix 平台上的一个选项,或者是 Windows 平台上的 DeltaCopy Server。两者都可以配置为需要用户身份验证。)这将允许您访问rsync
的 delta 算法并只写入更改。
另一种选择是查看您的存储管理员是否对备份有更好的建议,例如基于块的更改跟踪。他们可能会创建一个适合您作为用户的备份计划。