デルタ転送
リポジトリを別のマシンへ2回プッシュします。最初のプッシュはすべてを転送します。2回目は変更分だけを転送します。同じコマンド、フラグなし、管理不要。そして信じなくていいように、プッシュの出力に転送量がそのまま表示されます。
チュートリアル動画
バイトではなくブロック
最初のプッシュの後、CLI は両マシンに同一の不変ベースイメージを保持します。次のプッシュはそのベースに対してブロックを比較し、差分だけを送信します。
ステップ1: ベースラインのプッシュ
rdc repo push --name my-app --machine <machine-name> --to <target-machine> repositoryを2台目のマシンにプッシュします。最初のプッシュはイメージ全体を転送し、出力にその内容が表示されます。2 GB転送済み、(full)とマーク。デルタベースが両側に保持されます。
出力に明確に表示されます:2.0 GB transferred in 44.4s (full)。イメージ全体が転送され、両側に同じデルタベースが保持されました。
ステップ2: 少し変更する
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に少量の新しいデータを書き込みます。
ステップ3: 差分をプッシュする
rdc repo push --name my-app --machine <machine-name> --to <target-machine> 同じコマンドで再度プッシュします。出力には、2 GBのイメージのうち共有ベースに対するdeltaとして約50 MBが転送されたと表示されます。変更されたブロックだけが転送されました。
同じコマンドで、まったく異なる出力:50.8 MB transferred in 5.7s (delta vs base ..., image 2.0 GB)。50メガバイト変更されたので、2ギガバイトのイメージのうち約50メガバイトが転送されました。
ステップ4: 数秒で同期完了
rdc repo list --machine <target-machine> ターゲットマシンには更新されたrepositoryが保持されています。deltaのコストだけで同期されました。
両マシンが同じリポジトリを保持し、サイズではなく変更分のコストで更新されています。毎時間のマシン間バックアップが現実的になります。
明示的な制御が必要ですか?
--delta-base <guid>で比較ベースを固定し、--strategyでブロックデルタアルゴリズムを選択できます。デフォルトは両方を自動で判断します。
次: ストレージ管理