rsync –sparse确实传输整个数据

前端之家收集整理的这篇文章主要介绍了rsync –sparse确实传输整个数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一些需要每天同步的VM映像. VM文件稀疏.

为了节省网络流量,我只想传输图像的实际数据.
我在rsync上使用–sparse选项尝试但是在网络流量上我看到整个大小通过网络传输而不仅仅是真实的数据使用.

如果我使用rsync -zv –sparse然后只有真正的大小通过网络传输,一切都很好.但我不想因为cpu的使用而压缩文件.

不应该–sparse选项只传输实际数据,并且本地创建“空数据”以节省网络流量?

有没有压缩的解决方法

谢谢!

解决方法

看看 this discussion,特别是 this answer.

似乎解决方案是执行rsync –sparse,然后执行rsync –inplace.

在第一个–sparse,call,也使用–ignore-existing来防止已经传输的稀疏文件被覆盖,-z来保存网络资源.

第二个调用–inplace,应仅更新已修改的块.这里,压缩是可选的.

另见this post.

更新

我相信上述建议无法解决您的问题.我也相信rsync不是正确的任务工具.您应该搜索其他工具,这些工具可以在网络和磁盘I / O效率之间取得良好的平衡.

Rsync旨在有效使用单个资源,即网络.它假设读取和写入网络比读取和写入源文件和目标文件要昂贵得多.

We assume that the two machines are connected by a low-bandwidth high-latency bi-directional communications link. 07003.

该算法分为四个步骤.

>接收方β发送目标文件B的大小为S的块的校验和.
>发送方α在任何偏移处识别在源文件A中匹配的块.
>α发送β由逐字,非匹配,数据或匹配块引用组成的指令列表.
>β从这些指令重建整个文件.

请注意,rsync通常将文件B重建为临时文件T,然后用T替换B.在这种情况下,它必须写入整个文件.

正如人们可以想象的那样,– inplace并不能减轻rsync写入与α匹配的块.它们可以匹配不同的偏移量.在性能方面,第二次扫描B以获取新的数据校验和是令人望而却步的.可以跳过在第一步中读取的相同偏移量匹配的块,但rsync不会这样做.在稀疏文件的情况下,B的空块将匹配A的每个空块,并且必须被重写.

–inplace只会导致rsync直接写入B而不是T.它将重写整个文件.

猜你在找的Linux相关文章