1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
|
.ds p \&\s-1Xdelta\s0
.if n .ds - \%--
.if t .ds - \(em
.if !\n(.g \{\
. if !\w|\*(lq| \{\
. ds lq ``
. if \w'\(lq' .ds lq "\(lq
. \}
. if !\w|\*(rq| \{\
. ds rq ''
. if \w'\(rq' .ds rq "\(rq
. \}
.\}
.de PE
.sp \\n()Pu
.ne 2
.nf
.IP
..
.de EP
.fi
.PP
.sp \\n()Pu
..
.TH Xdelta 1
.SH NAME
xdelta \- Invoke Xdelta
.SH SYNOPSIS
.B xdelta
.I subcommand
[
.IR option ".\|.\|.
] [
.IR operand .\|.\|.
]
.SH DESCRIPTION
Xdelta provides the ability to generate deltas between a pair of files
and later apply those deltas. It operates similar to the
.B diff
and
.B patch
commands, but works on binary files and does not produce a human
readable output.
.PP
Xdelta has three subcommands, delta, patch, and info. Delta accepts
two file versions and produces a delta, while patch accepts the
original file version and delta and produces the second version. The
info command prints useful information about a delta. Each subcommand
will be detailed seperately.
.SS Gzip processing
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
.IR gzip (1)
compressed files. If any version input to the delta command is
recognized as having gzip compression, it will be automatically
decompressed into a temporary location prior to comparison. This
temporary location is either the value of the
.IR TMPDIR
environment variable, if set, otherwise "/tmp".
The Xdelta patch header contains a flag indicating that the
reconstructed version should be recompressed after applying the
patch. In general, this allows Xdelta to operate transparently on
gzip compressed inputs.
There is one potential problem when automatically processing gzip
compressed files, which is that the recompressed content does not
always match byte-for-byte with the original compressed content. The
uncompressed 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 gzip processing.
.SS MD5 integrity check
By default, Xdelta always verifies the MD5 checksum of the files it
reconstructs. This prevents you from supplying an incorrect input
during patch, which would result in corrupt output. Because of this
feature, you can feel confident that patch has produced valid results.
The --noverify option disables MD5 verification, but this is only
recommended for performance testing.
.SS 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
Xdelta delta.
.SS Delta
The delta subcommand has the following synopsis:
.B xdelta
.I delta
[
.IR option ".\|.\|.
]
.IR fromfile
.IR tofile
.IR patchout
Computes a delta from
.IR fromfile
to
.IR tofile
and writes it to
.IR patchout
.SS Patch
The patch subcommand has the following synopsis:
.B xdelta
.I patch
[
.IR option ".\|.\|.
]
.IR patchin
[
.IR fromfile
[
.IR tofile
]]
Applies
.IR patchin
to
.IR fromfile
and produces a reconstructed version of
.IR tofile.
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
differs, 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.
.SS Info
The info subcommand has the following synopsis:
.B xdelta
.I info
.IR patchinfo
Prints information about
.IR patchinfo
and the version it reconstructs, including file names, lengths, and
MD5 checksums.
.SS Options
.IP -0..9
Set the zlib compression level. Zero indicates no compression. Nine
indicates maximum compression.
.IP "-h, --help"
Print a short help message and exit.
.IP "-q, --quiet"
Quiet. Surpresses several warning messages.
.IP "-v, --version"
Print the Xdelta version number and exit.
.IP "-V, --verbose"
Verbose. Prints a bit of extra information.
.IP "-n, --noverify"
No verify. Turns off MD5 checksum verification of the input and
output files.
.IP "-mSIZE, --maxmem=SIZE"
Set an upper bound on the size of an in-memory page cache. For
example, --maxmem=32M will use a 32 megabyte page cache.
.IP "-s=BLOCK_SIZE"
Set the block size, unless it was hard coded (20% speed improvement).
Should be a power of 2.
.IP "-p, --pristine"
Disable the automatic decompression of gzipped inputs, to prevent
unexpected differences in the re-compressed content.
.SH IDENTIFICATION
Author: Joshua P. MacDonald, jmacd@cs.berkeley.edu
.br
.\" $Format: "Manual Page Revision: $Revision$; Release Date: $ProjectDate$."$
Manual Page Revision: 1.5; Release Date: Fri, 29 Jun 2001 06:01:08 -0700.
.br
Copyright \(co 1997, 1998, 1999, 2000, 2001
|