
2つの大きなファイルがあります。
a.qcow2
16GBです。b.qcow2
17GBです。
.b.qcow2
a.qcow2
2つのファイル間のデルタを生成できるLinuxコマンドは何ですか? (サイズは2 GB未満でなければなりません。)
a.qcow2
と同じ出力を生成するためにデルタを適用できるLinuxコマンドは何ですかb.qcow2
?
ソースとターゲットのサイズ、ハッシュなどのデルタ形式のセキュリティ対策はありますか?
答え1
2つの類似した仮想マシンがある場合は、qemuオプションを使用することをお勧めします。backing_file
qemu-img create -f qcow2 \
-o backing_file=/path/to/base/image.qcow2 \
/path/to/new_guest/image.qcow2
これにより、マスターイメージを作成し、元のイメージと2番目のイメージの間にdiffファイルのみを作成して、多くのGBスペースを節約できます。また、これらのファイル間のバイナリの違いを本当に知りたい場合は、次のコマンドを確認することをお勧めします。
- 違い
- テキサス
- デルタ
答え2
2つのシステム間の違いを転送したいとします。これが、共有ルートからQCOWイメージをリベースできない理由です。
このrsync
ツールを使用すると、バイナリdiffを生成できます。以下は(かなり)小さなファイルの例です。
ls -l ?.qcow2
-rwxrwx--- 1 root root 76993536 Jan 2 2020 a.qcow2
-rwxrwx--- 1 root root 77337600 Oct 25 19:00 b.qcow2
b.qcow2
あなたの質問によって違いを見つける必要がありますa.qcow2
。提供されたアイテムはrsync
ソースとターゲットの両方に到達できるため、同じサーバー上にある必要はありません。
rsync -av --only-write-batch b_to_a.rsyncdiff b.qcow2 a.qcow2
これは違いを確認して作成し、b_to_a.rsyncdiff
セカンダリシェルスクリプトも生成します。
ls -l b_to_a*
-rw------- 1 root root 35617731 Oct 26 09:26 b_to_a.rsyncdiff
-rwx------ 1 root root 54 Oct 26 09:26 b_to_a.rsyncdiff.sh
cat b_to_a.rsyncdiff.sh
rsync -av --read-batch b_to_a.rsyncdiff ${1:-a.qcow2}
変更を適用するには、ソースソースa.qcow2
との違いのみが必要です。
rsync -av --read-batch b_to_a.rsyncdiff a.qcow2
receiving incremental file list
b.qcow2
sent 61,509 bytes received 35,621,188 bytes 71,365,394.00 bytes/sec
total size is 77,337,600 speedup is 2.17
結果
ls -l ?.qcow2
-rwxrwx--- 1 root root 77337600 Oct 25 19:00 a.qcow2
-rwxrwx--- 1 root root 77337600 Oct 25 19:00 b.qcow2
答え3
個人的にデルタップこれはGentooユーザーの間でのみ知られています。
非常に速く、しばしばxdelta
大きな違いに先んじる。