跳至主要内容 跳至导航 跳至页脚
限时:设计合作伙伴计划,BUSINESS 套餐永久免费

增量传输

首次推送到另一台机器时传输全量数据;此后每次推送只传输变更的数据块,自动完成,无需任何配置。

增量传输

把仓库推送到另一台机器两次。第一次传输全部内容,第二次只传输变更部分。同一条命令,无需额外参数,无需手动记录。而且你不必凭信念接受这一点,因为推送输出会精确打印传输了多少数据。

观看教程

数据块,而非字节流

数据块,而非字节流

首次推送后,CLI 在两台机器上各保留一份相同的不可变基础镜像。下次推送时,只需与该基础镜像比对数据块差异,只发送不同的部分。

第一步:基线推送

rdc repo push --name my-app --machine <machine-name> --to <target-machine>

将 repository 推送到第二台机器。第一次推送会传输完整镜像,输出结果显示:传输了 2 GB,标记为 (full)。两端均保留了一份 delta 基础镜像。

输出说得很清楚:2.0 GB transferred in 44.4s (full)。整个镜像完成传输,两端各保留了一份相同的增量基础。

第二步:修改少量数据

rdc term connect --machine <machine-name> --repository my-app --command 'dd if=/dev/urandom of=delta-test.bin bs=1M count=50 status=none && ls -lh delta-test.bin'

向 repository 中写入少量新数据。

第三步:推送差异

rdc repo push --name my-app --machine <machine-name> --to <target-machine>

用相同命令再次推送:输出显示,相对于共享基础镜像,在 2 GB 的镜像中约传输了 50 MB 的 delta 内容。只有发生变化的块被传输了。

同一条命令,输出截然不同:50.8 MB transferred in 5.7s (delta vs base ..., image 2.0 GB)。变更了约五十兆字节,传输的也大约是五十兆字节,而整个镜像有两 GB。

第四步:同步完成,仅需数秒

rdc repo list --machine <target-machine>

目标机器现已保有更新后的 repository,同步成本仅为 delta 的大小。

两台机器持有相同的仓库,刷新代价只是变更量,而非数据总量。按小时频率进行机器间备份,不再昂贵。

需要精确控制?--delta-base <guid> 可指定比对基础,--strategy 可选择数据块差异算法。默认情况下两者都会自动确定。


下一篇:存储管理