use*_*212 8 rsync sparse-matrix
我有一些需要每天同步的VM映像.VM文件稀疏.
为了节省网络流量,我只想传输图像的实际数据.我在rsync上使用--sparse选项尝试但是在网络流量上我看到整个大小通过网络传输而不仅仅是真实的数据使用.
如果我使用rsync -zv --sparse然后只有真正的大小通过网络传输,一切都很好.但我不想因为cpu的使用而压缩文件.
不应该--sparse选项只传输实际数据,并且本地创建"空数据"以节省网络流量?
有没有压缩的解决方法?
谢谢!
似乎解决方案是做一个rsync --sparse跟随a rsync --inplace.
在第一个,--sparse调用,也用于--ignore-existing防止已经传输的稀疏文件被覆盖,并-z节省网络资源.
第二个调用--inplace应该只更新修改后的块.这里,压缩是可选的.
另见这篇文章.
更新
我相信上述建议无法解决您的问题.我也相信这rsync不是完成任务的正确工具.您应该搜索其他工具,这些工具可以在网络和磁盘I/O效率之间取得良好的平衡.
Rsync设计用于有效使用单个资源,即网络.它假设读取和写入网络比读取和写入源文件和目标文件要昂贵得多.
我们假设这两台机器通过低带宽高延迟双向通信链路连接.rsync算法,抽象.
该算法分为四个步骤.
请注意,rsync通常重建文件乙作为临时文件Ť,然后替换乙与Ť.在这种情况下,它必须写入整个文件.
正如人们可以想象的那样,--inplace并没有减少rsync写出与α匹配的块.它们可以匹配不同的偏移量.在性能方面,第二次扫描B以获取新的数据校验和是令人望而却步的.可以跳过在第一步中读取的相同偏移量匹配的块,但rsync不会这样做.在稀疏文件的情况下,B的空块将匹配A的每个空块,并且必须被重写.
的--inplace正义事业rsync,直接写信给乙,而不是牛逼.它将重写整个文件.
小智 7
最新版本的 rsync 可以同时处理 --sparse 和 --inplace !我找到了 2016 年的以下 github 条目:https://github.com/tuna/rsync/commit/f3873b3d88b61167b106e7b9227a20147f8f6197