xdelta - Invoke Xdelta
xdelta subcommand [ option... ] [ operand... ]
Xdelta provides the ability to generate deltas between a pair of files
and later apply those deltas. It operates similar to the diff and
patch commands, but works on binary files and does not produce a human
Xdelta has three subcommands, delta, patch, and info. Delta accepts
two file versions and produces a delta, while patch accepts the origi-
nal file version and delta and produces the second version. The info
command prints useful information about a delta. Each subcommand will
be detailed seperately.
Attempting to compute a delta between compressed input files usually
results in poor compression. This is because small differences between
the original contents causes changes in the compression of whole blocks
of data. To simplify things, Xdelta implements a special case for
gzip(1) compressed files. If any version input to the delta command is
recognized as having gzip compression, it will be automatically decom-
pressed into a temporary location prior to comparison. This temporary
location is either the value of the TMPDIR environment variable, if
set, otherwise "/tmp".
The Xdelta patch header contains a flag indicating that the recon-
structed version should be recompressed after applying the patch. In
general, this allows Xdelta to operate transparently on gzip compressed
There is one potential problem when automatically processing gzip com-
pressed files, which is that the recompressed content does not always
match byte-for-byte with the original compressed content. The uncom-
pressed content still matches, but if there is an external integrity
check such as cryptographic signature verification, it may fail. To
prevent this from happening, the --pristine option disables automatic
MD5 integrity check
By default, Xdelta always verifies the MD5 checksum of the files it
reconstructs. This prevents you from supplying an incorrect input dur-
ing patch, which would result in corrupt output. Because of this fea-
ture, you can feel confident that patch has produced valid results.
The --noverify option disables MD5 verification, but this is only rec-
ommended for performance testing.
Compressed patch format
Xdelta uses a fairly simple encoding for its delta, then applies zlib
compression to the result. You should not have to post-compress an
The delta subcommand has the following synopsis:
xdelta delta [ option... ] fromfile tofile patchout
Computes a delta from fromfile to tofile and writes it to patchout
The patch subcommand has the following synopsis:
xdelta patch [ option... ] patchin [ fromfile [ tofile ]]
Applies patchin to fromfile and produces a reconstructed version of
If fromfile was omitted, Xdelta attempts to use the original fromfile
name, which is stored in the delta. The from file must be identical to
the one used to create the delta. If its length or MD5 checksum dif-
fers, patch will abort with an error message.
If tofile was omitted, Xdelta attempts to use the original tofile name,
which is also stored in the delta. If the original tofile name already
exists, a unique filename extension will be added to avoid destroying
any existing data.
The info subcommand has the following synopsis:
xdelta info patchinfo
Prints information about patchinfo and the version it reconstructs,
including file names, lengths, and MD5 checksums.
-0..9 Set the zlib compression level. Zero indicates no compression.
Nine indicates maximum compression.
Print a short help message and exit.
Quiet. Surpresses several warning messages.
Print the Xdelta version number and exit.
Verbose. Prints a bit of extra information.
No verify. Turns off MD5 checksum verification of the input and
Set an upper bound on the size of an in-memory page cache. For
example, --maxmem=32M will use a 32 megabyte page cache.
Set the block size, unless it was hard coded (20% speed improve-
ment). Should be a power of 2.
Disable the automatic decompression of gzipped inputs, to pre-
vent unexpected differences in the re-compressed content.
Author: Joshua P. MacDonald, email@example.com
Manual Page Revision: 1.5; Release Date: Fri, 29 Jun 2001 06:01:08
Copyright © 1997, 1998, 1999, 2000, 2001
Man(1) output converted with