我正在对一个非常大的文件图像文件(只有几个像素差异)进行微小更改,该文件需要很长时间才能通过网络传输。
有没有办法让 rsync 识别文件中的差异并只通过网络发送小的差异?
小智 13
rsync
delta-transfer 算法默认执行此操作。引用rsync 联机帮助页:
描述
Rsync 是一种快速且非常通用的文件复制工具。它可以在本地、通过任何远程 shell 复制到另一台主机或从远程 rsync 守护程序复制到/从另一个主机复制。它提供了大量选项来控制其行为的各个方面,并允许非常灵活地指定要复制的文件集。它以其增量传输算法而闻名,该算法通过仅发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量。Rsync 广泛用于备份和镜像,并作为日常使用的改进复制命令。
如果要禁用它,则必须使用-W
或--whole-file
选项。
-W, --whole-file
此选项禁用 rsync 的增量传输算法,这会导致所有传输的文件被完整发送。如果在源计算机和目标计算机之间的带宽高于磁盘带宽(尤其是当“磁盘”实际上是网络文件系统时)时使用此选项,则传输速度可能会更快。当源和目标都指定为本地路径时,这是默认值,但前提是没有批量写入选项有效。
如果您真的知道您的文件发生了多少变化,您甚至可以通过调整增量块大小来优化这种增量传输行为:
-B, --block-size=BLOCKSIZE
这会强制 rsync 的增量传输算法中使用的块大小为固定值。通常根据正在更新的每个文件的大小来选择它。详见技术报告。
如果您想了解有关算法本身的更多信息,可以在此处找到:Rsync 算法