xdeltaは、バイナリファイルの差分を生成するためのコマンドラインプログラムです。 `diff` や `patch` と同様の目的で使用されますが、テキストファイルではなくバイナリファイルを対象としており、人間が読解可能な形式での出力は行いません。
1997年に最初にリリースされて以来、Joshua MacDonald氏によって開発と保守が続けられています。初期のバージョンであるxdelta1は、Andrew Tridgell氏が開発したrsyncのアルゴリズムを基盤としていましたが、より小さなブロックサイズ(16バイトや32バイトなど)を使用して圧縮を行っていました。
xdelta1ではブロック全体が完全に一致する必要がありましたが、後継のxdelta3ではVCDIFF(RFC 3284)のアルゴリズムを採用し、4バイト以上の部分的な一致を検出して圧縮できるようになりました。xdelta1とxdelta3には互換性がなく、APIも完全に書き直されており、
Linuxディストリビューションなどでは別々のプログラムとして扱われています。
xdelta3の特筆すべき点は、標準のVCDIFF形式(RFC 3284)での出力が可能になったことです。これにより、他のVCDIFF形式に対応した
差分符号化ソフトウェアとの相互運用性が実現しました。xdeltaは、
UNIX、
Linux、BSD、
Microsoft Windows、macOSといった幅広いプラットフォームで動作し、最大2^64バイトまでのファイルを扱うことが可能です。そのため、大規模なバックアップファイルの差分処理に適しています。
xdeltaによって生成されるパッチファイルは、ZIPなどで二次的に圧縮することで、さらに高い圧縮率を実現できます。VCDIFFの仕様自体も、そのような利用方法を想定して設計されています。
xdelta3によって生成されるパッチファイルの一般的な拡張子は `.xd3` です。また、xdelta3のGUI版としては、Delta
Patcherという
ソフトウェアが存在します。
関連項目
差分符号化
脚注
外部リンク
公式ウェブサイト
Andrew Tridgell's PHD on rsync, with a section on xdelta
RFC 3284, VCDIFF標準差分符号化フォーマットの仕様