1ZPAQ(1)               User Contributed Perl Documentation              ZPAQ(1)
2
3
4

NAME

6       zpaq - Journaling archiver for incremental backups.
7

SYNOPSIS

9       zpaq command archive[".zpaq"] [files]... [-options]...
10

DESCRIPTION

12       zpaq manages journaling archives for incremental user-level local or
13       remote backups that conform to The ZPAQ Open Standard Format for Highly
14       Compressed Data (see AVAILABILITY). The format supports encrypted,
15       deduplicated, and compressed single or multi-part archives with
16       rollback capability.  It supports archives as large as 1000 times
17       available memory or up to 250 TB and 4 billion files, interoperable
18       between Windows and Unix/Linux/OS X.
19

COMMANDS

21       command is one of "add", "extract", or "list" Commands may be
22       abbreviated to "a", "x", or "l" respectively.  archive is assumed to
23       have a ".zpaq" extension if no extension is specified.
24
25       If archive contains wildcards "*" or "?", then the archive is in
26       multiple parts where "*" matches the part number and "?" matches single
27       digits. zpaq will consider the concatenation of the parts in numerical
28       order starting with 1 to be equivalent to a single archive.  For
29       example, "arc??" would match the concatenation of "arc01.zpaq",
30       "arc02.zpaq", etc. up to the last existing part.
31
32       a
33       add Append changes in files to archive, or create archive if it does
34           not exist. files is a list of file and directory names separated by
35           spaces. If a name is a directory, then it recursively includes all
36           files and subdirectories within. In Windows, files may contain
37           wildcards "*" and "?" in the last component of the path (after the
38           last slash).  "*" matches any string and "?" matches any character.
39           In Unix/Linux, wildcards are expanded by the shell, which has the
40           same effect.
41
42           A change is an addition, update, or deletion of any file or
43           directory in files or any of its subdirectories to any depth. A
44           file or directory is considered changed if its size or last-
45           modified date (with 1 second resolution), or Windows attributes or
46           Unix/Linux permissions (if saved) differ between the internal and
47           external versions. File contents are not compared. If the
48           attributes but not the date has changed, then the attributes are
49           updated in the archive with the assumption that the file contents
50           have not changed.
51
52           Files are added by splitting them into fragments along content-
53           dependent boundaries, computing their SHA-1 hashes, and comparing
54           with hashes already stored in the archive. If the hash matches, it
55           is assumed that the fragments are identical and only a pointer to
56           the previous compressed fragment is saved. Unmatched fragments are
57           packed into blocks, compressed, and appended to the archive.
58
59           For each added or updated file or directory, the following
60           information is saved in the archive: the compressed contents,
61           fragment hashes, the file or directory name as it appears in files
62           plus any trailing path, the last-modified date with 1 second
63           resolution, and the Unix/Linux permissions or Windows attributes.
64           Other metadata such as owner, group, ACLs, last access time, etc.
65           are not saved. Symbolic links are not saved or followed.  Hard
66           links are followed as if they were ordinary files. Special file
67           types such as devices, named pipes, and named sockets are not
68           saved.  The 64 bit Windows version will save alternate data
69           streams.
70
71           If any file cannot be read (e.g. permission denied), then it is
72           skipped and a warning is reported. However, other files are still
73           added and the update is still valid.
74
75           If archive is "" (a quoted empty string), then zpaq compresses
76           files as if creating a new archive, but discards the output without
77           writing to disk.
78
79           If archive is multi-part, the zpaq will create a new part using the
80           next available part number. For example:
81
82               zpaq add "arc??" files   (creates arc01.zpaq)
83               zpaq add "arc??" files   (creates arc02.zpaq)
84               zpaq add "arc??" files   (creates arc03.zpaq)
85               zpaq extract "arc??"     (extracts all parts)
86
87           Updates are transacted. If zpaq is interrupted before completing
88           the update, then the partially appended data is ignored and
89           overwritten on the next update. This is accomplished by first
90           appending a temporary update header, appending the compressed data
91           and index, then updating the header as the last step.
92
93           As the archive is updated, the program will report the percent
94           complete, estimated time remaining, the name and size of the file
95           preceded by "+" if the file is being added, "#" if updated, or "-"
96           if deleted. If the file is deduplicated, then the new size after
97           deduplication but before compression is shown.
98
99       x
100       extract
101           Extract files (including the contents of directories), or extract
102           the whole archive contents if files is omitted.  The file names,
103           last-modified date, and permissions or attributes are restored as
104           saved in the archive.  If there are multiple versions of a file
105           stored, then only the latest version is extracted. If a stored file
106           has been marked as deleted, then it is not extracted.
107
108           Existing files are skipped without being overwritten. (Use "-force"
109           to overwrite).
110
111           As files are extracted, the fragment SHA-1 hashes are computed and
112           compared with the stored hashes. The program reports an error in
113           case of mismatches.  Blocks are only decompressed up to the last
114           used fragment.  If the archive is damaged, then zpaq will extract
115           as much as possible from the undamaged blocks.
116
117           As files are extracted, the program reports the percent completed,
118           estimated time remaining, and the name of the file preceded by ">"
119           if the file is created or overwritten (with "-force"), "?" if the
120           file is skipped because it already exists, or "=" if decompression
121           is skipped with "-force" because the contents were compared and
122           found to be identical. The date and attributes are still extracted
123           in this case.
124
125       l
126       list
127           List the archive contents. With files, list only the specified
128           files and directories and compare them with the same files on disk.
129           For each file or directory, show the comparison result, last
130           modified date, uncompressed size, Windows attributes or Unix/Linux
131           permissions, and the saved name. If the internal and external
132           versions of the file differ, then show both.
133
134           The comparison result is reported in the first column as "=" if the
135           last-modified date, attributes (if saved), and size are identical,
136           "#" if different, "-" if the external file does not exist, or "+"
137           if the internal file does not exist. With "-force", the contents
138           are compared, but not the dates or attributes. Contents are
139           compared by reading the files, computing SHA-1 hashes and comparing
140           with the stored hashes. In either case, replacing "list" with "add"
141           will show exactly what changes would be made to the archive.
142
143           In Unix/Linux, permissions are listed as a file type "d" for
144           directory or blank for a regular file, followed by a 4 digit octal
145           number as per chmod(1). In Windows, attributes are listed from the
146           set "RHS DAdFTprCoIEivs" where the character is present if the
147           corresponding bit 0..17 is set as returned by GetFileAttributes().
148           The meanings are as follows: "R"ead-only, "H"idden, "S"ystem,
149           unused (blank), "D"irectory, "A"rchive, "d"evice, normal "F"ile,
150           "T"emporary, s"p"arse file, "r"eparse point, "C"ompressed,
151           "o"ffline, not content "I"indexed, "E"ncrypted, "i"ntegrity stream,
152           "v"irtual, no "s"crub data.
153
154           archive may be "", which is equivalent to comparing with an empty
155           archive.
156

OPTIONS

158       -all [N]
159           With "list", list all saved versions and not just the latest
160           version, including versions where the file is marked as deleted.
161           Each version is shown in a separate numbered directory beginning
162           with "0001/".  Absolute paths are first converted to relative
163           paths. In Windows, the ":" on the drive letter is removed. For
164           example, "foo" and "/foo" are shown as "0001/foo". "C:/foo" and
165           "C:foo" are shown as "0001/C/foo".
166
167           The date shown on the root directory of each version is the date of
168           the update. The root directory listing also shows the number of
169           updates and deletions in that version and the compressed size.
170
171           When a file is deleted, it is shown with the dates and attributes
172           blank with size 0.
173
174           With "extract", extract the files in each version as shown with
175           "list -all".
176
177           N selects the number of digits in the directory name. The default
178           is 4.  More digits will be used when necessary. For example:
179
180               zpaq list archive -all 2 -not "??/?*"
181
182           will show the dates when the archive was updated as "01/", "02/",
183           etc. but not their contents.
184
185       -f
186       -force
187           With "add", attempt to add files even if the last-modified date has
188           not changed. Files are added only if they really are different,
189           based on comparing the computed and stored SHA-1 hashes
190
191           With "extract", overwrite existing output files. If the contents
192           differ (tested by comparing SHA-1 hashes), then the file is
193           decompressed and extracted. If the dates or attributes/permissions
194           differ, then they are set to match those stored in the archive.
195
196           With "list" files, compare files by computing SHA-1 fragment hashes
197           and comparing with stored hashes. Ignore differences in dates and
198           attributes.
199
200       -fragment N
201           Set the dedupe fragment size range from 64 2^N to 8128 2^N bytes
202           with an average size of 1024 2^N bytes. The default is 6 (range
203           4096..520192, average 65536). Smaller fragment sizes can improve
204           compression through deduplication of similar files, but require
205           more memory and more overhead. Each fragment adds about 28 bytes to
206           the archive and requires about 40 bytes of memory. For the default,
207           this is less than 0.1% of the archive size.
208
209           Values other than 6 conform to the ZPAQ specification and will
210           decompress correctly by all versions, but do not conform to the
211           recommendation for best deduplication. Adding identical files with
212           different values of N will not deduplicate because the fragment
213           boundaries will differ.  "list -summary" will not identify these
214           files as identical for the same reason.
215
216       -index indexfile
217           With "add", create archive".zpaq" as a suffix to append to a remote
218           archive which is assumed to be identical to indexfile except that
219           indexfile contains no compressed file contents (D blocks).  Then
220           update indexfile by appending a copy of archive".zpaq" without the
221           D blocks. With "extract", specify the index to create for
222           archive".zpaq" and do not extract any files.
223
224           The purpose is to maintain a backup offsite without using much
225           local disk space. The normal usage is to append the suffix at the
226           remote site and delete it locally, keeping only the much smaller
227           index.  For example:
228
229               zpaq add part files -index index.zpaq
230               cat part.zpaq >> remote.zpaq
231               rm part.zpaq
232
233           indexfile has no default extension. However, with a ".zpaq"
234           extension it can be listed to show the contents of the remote
235           archive or compare with local files. It cannot be extracted or
236           updated as a regular archive. Thus, the following should produce
237           identical output:
238
239               zpaq list remote.zpaq
240               zpaq list index.zpaq
241
242           If archive is multi-part (contains "*" or "?"), then zpaq will
243           substitute a part number equal to 1 plus the number of previous
244           updates.  The parts may then be accessed as a multi-part archive
245           without appending or renaming.
246
247           With "add", it is an error if the archive to be created already
248           exists, or if indexfile is a regular archive. "-index" cannot be
249           used with "-until" or a streaming archive "-method s...".  With
250           "extract", it is an error if indexfile exists and "-force" is not
251           used to overwrite.
252
253       -key password
254           This option is required for all commands operating on an encrypted
255           archive.  When creating a new archive with "add", the new archive
256           will be encrypted with password and all subsequent operations will
257           require the same password.
258
259           An archive is encrypted with AES-256 in CTR mode. The password is
260           strengthened using Scrypt(SHA-256(password), salt, N=16384, r=8,
261           p=1), which would require 208M operations and 16 MB memory per test
262           in a brute force key search.  When creating a new archive, a 32
263           byte salt is generated using CryptGenRandom() in Windows or from
264           /dev/urandom in Unix/Linux, such that the first byte is different
265           from the normal header of an unencrypted archive ("z" or 7). A
266           multi-part archive is encrypted with a single keystream as if the
267           parts were concatenated.  An index is encrypted with the same
268           password, where the first byte of the salt is modified by XOR with
269           ('z' XOR '7').
270
271           Encryption provides secrecy but not authentication. An attacker who
272           knows or can guess any bits of the plaintext can set them without
273           knowing the key.
274
275       -mtype[Blocksize[.pre[.arg][comp[.arg]]...]]
276       -method type[Blocksize[.pre[.arg][comp[.arg]]...]]
277           With "add", select a compression method. type may be 0, 1, 2, 3, 4,
278           5, "x", or "s". The optional Blocksize may be 0..11, written with
279           no space after the type, like "-m10" or "-method 511". The
280           remaining arguments, separated by periods or commas without spaces,
281           are only allowed for types "x" or "s", for example "-mx4.3ci1".
282
283           If type is numeric, then higher numbers compress better but are
284           slower.  The default is "-m1". It is recommended for backups. "-m2"
285           compresses slower but decompresses just as fast as 1. It is
286           recommended for archives to be compressed once and decompressed
287           many times, such as downloads. "-m0" stores with deduplication but
288           no further compression.
289
290           Blocksize says to pack fragments into blocks up to 2^Blocksize MiB.
291           Using larger blocks can improve compression but require more memory
292           and may be slower because each block is compressed or decompressed
293           by a separate thread.  The memory requirement is up to 8 times
294           Blocksize per thread for levels up to 4 and 16 times block size per
295           thread for level 5.  The default Blocksize is 4 (16 MiB) for types
296           0 and 1, and 6 (64 MiB) otherwise.
297
298           Types "x" and "s" are for experimental use. Normally, zpaq selects
299           different methods depending on the compression level and an
300           analysis of the data (text, executable, or other binary, and degree
301           of compressibility).  type selects journaling or streaming format.
302           pre is 0..7 selecting a preprocessing step (LZ77, BWT, E8E9), comp
303           is a series of context modeling components from the set
304           {c,i,a,w,m,s,t} selecting a CM or ICM, ISSE chain, MATCH, word
305           model, MIX, SSE, or MIX2 respectively. pre and comp may be followed
306           by a list of numeric arguments (arg) separated by periods or
307           commas.  For example:
308
309               -method x6.3ci1
310
311           selects a journaling archive (x), block size 2^6 = 64 MiB, BWT
312           transform (3), an order 0 ICM (c), and order 1 ISSE (i1). (zpaq
313           normally selects this method for level 3 text compression). type is
314           as follows.
315
316           x   Selects normal (journaling) mode. Files are split into
317               fragments, deduplicated, packed into blocks, and compressed by
318               the method described. The compressed blocks are preceded by a
319               transaction header giving the date of the update.  The blocks
320               are followed by a list of fragment hashes and sizes and a list
321               of files added, updated, or deleted. Each added or updated file
322               lists the last-modifed date, attributes, and a list of fragment
323               IDs.
324
325           s   Selectes streaming mode for single-pass extraction and
326               compatibility with zpaq versions prior to 6.00 (2012).
327               Streaming archives do not support deduplication or rollback.
328               Files are split into fragments of size 2^blocksize MiB - 4 KiB.
329               Each file or fragment is compressed in a separate block with no
330               attempt at deduplication. The file name, date, and attributes
331               are stored in the header of the first fragment. The hashes are
332               stored in the trailers of each block. There is no transaction
333               block to allow rollback. Files are added to the previously
334               dated update.  Streaming mode with "-index" is an error.
335
336           pre[.min1.min2.depth.size[.lookahead]]
337               pre selects a pre/post processing step before context modeling
338               as follows.
339
340                   0 = no preprocessing
341                   1 = Packed LZ77
342                   2 = Byte aligned LZ77
343                   3 = BWT (Burrows-Wheeler Transform)
344                   4 = E8E9
345                   5 = E8E9 + packed LZ77
346                   6 = E8E9 + byte aligned LZ77
347                   7 = E8E9 + BWT
348
349               The E8E9 transform (4..7) improves the compression of x86
350               executable files (.exe or .dll). The transform scans backward
351               for 5 byte patterns of the form (E8|E9 xx xx xx 00|FF) hex and
352               adds the block offset to the three middle bytes. The E8 and E9
353               opcodes are CALL and JMP, respectively. The transform replaces
354               relative addresses with absolute addresses. The transform is
355               applied prior to LZ77 or BWT. Decompression reverses the
356               transforms in the opposite order.
357
358               LZ77 (1, 2, 5, 6) compresses by searching for matching strings
359               using a hash table or suffix array and replacing them with
360               pointers to the previous match. Types 1 and 2 select variable
361               bit length coding or byte aligned coding respectively.
362               Variable bit length encoding compresses better by itself, but
363               byte aligned coding allows for further compression using a
364               context model.  Types 6 and 7 are the same as 1 and 2
365               respectively, except that the block is E8E9 transformed first.
366
367               BWT (Burrows Wheeler Transform, 3 or 7), sorts the input block
368               by context, which brings bytes with similar contexts together.
369               It does not compress by itself, but makes the input suited to
370               compression with a fast adapting low order context model.
371
372               The remaining arguments apply only to LZ77.  min1 selects the
373               minimum match length, which must be at least 4 for packed LZ77
374               or 1 for byte aligned LZ77. min2 selects a longer minimum match
375               length to try first, or is 0 to skip this step. The block is
376               encoded by testing 2^depth locations indexed by a hash table of
377               2^size elements indexed by hashes of the next min2 and then
378               min1 characters. If lookahead is specified and greater than 0,
379               then, the search is repeated lookahead + 1 times to consider
380               coding the next 0 to lookahead bytes as literals to find a
381               longer match.
382
383               If size = blocksize + 21, then matches are found using a suffix
384               array instead of a hash table, scanning forward and backward
385               2^depth elements to find the longest past match. min2 has no
386               effect.  A suffix array requires 4.5 x 2^blocksize MiB memory.
387               A hash table requires 4 x 2^size bytes memory. For example:
388
389                   -method x6.1.4.0.5.27.1
390
391               specifies 64 MiB blocks (6), variable length LZ77 without E8E9
392               (1), minimum match length 4, no secondary search (0), search
393               depth 2^5 = 32 in each direction in the suffix array (27 = 6 +
394               21), and 1 byte lookahead.
395
396           comp specifies a component of a context model. If this section is
397           empty, then no further compression is performed. Otherwise the
398           block is compressed by an array of components. Each component takes
399           a context and possibly the outputs of earlier components, and
400           outputs a prediction, a probability that the next bit of input is a
401           1.  The final prediction is used to arithmetic code the bit.
402           Components normally allocate memory equal to the block size, or
403           less for smaller contexts as needed. Components are as follows:
404
405           c[.maxcount[.offset[.mask]...]]
406               Specifies a context model (CM), or indirect context model
407               (ICM). A CM maps a context hash to a prediction by looking up
408               the context in a table, and then adjusts the prediction to
409               reduce the coding error by 1/count, where count is bounded by
410               maxcount x 4, and maxcount is in 1..255.
411
412               If maxcount is 0, then specify an ICM. An ICM maps a context to
413               a state representing two bit counts and the most recent bit.
414               That state is mapped to a prediction and updated at a fixed
415               rate. An ICM adapts faster to changing statistics. A CM with a
416               high count compresses stationary data better. The default is 0
417               (ICM).
418
419               If maxcount has the form 1000m + n, then the effect is the same
420               as maxcount = n while reducing memory to 1/2^m of block size.
421
422               The remaining arguments represent contexts, all of which are
423               hashed together. If offset is 1..255, then the block offset mod
424               offset is hashed in. If offset is 1000..1255, then the distance
425               to the last occurrance of offset - 1000 is hashed in. For
426               example, "c0.1010" specifies an ICM taking the text column
427               number (distance back to the last linefeed = 10) as context.
428               The default is 0 (no context).
429
430               Each mask is ANDed with previous bytes. For example,
431               "c0.0.255.255.255" is an ICM with order 3 context. A value in
432               256..511 specifies a context of mask - 256 hashed together with
433               the byte aligned LZ77 parse state (whether a literal or match
434               code is expected). For example, "-method
435               x6.2.12.0.8.27c0.0.511.255" specifes block size 2^6 MiB, byte
436               aligned LZ77 (2), minimum match length 12, search depth 2^8,
437               suffix array search (27 = 6 + 21), an ICM (c0), no offset
438               context (0), and order 2 context plus LZ77 state (511.255).
439
440               A mask greater than 1000 is shorthand for mask - 1000 zeros.
441               For example, the sparse context "c0.0.255.1003.255" is
442               equivalent to "c0.0.255.0.0.0.255".
443
444           m[size[.rate]]
445               Specifies a MIX (mixer). A MIX computes a weighted average of
446               the predictions of all previous components. (The averaging is
447               in the logistic domain: log(p / (1 - p))). The weights are then
448               adjusted in proportion to rate (0..255) to reduce the
449               prediction error. A size bit context can be used to select a
450               set of weights to be used. The first 8 bits of context are the
451               previously coded bits of the current byte. The default is
452               "m8.24".  A MIX with n inputs requires 4n x 2^size bytes of
453               memory.
454
455           t[size[.rate]]
456               Specifies a MIX2. A MIX2 is like a MIX except that it takes
457               only the last 2 components as input, and its weights are
458               constrained to add to 1.  A MIX2 requires 4 x 2^size bytes of
459               memory. The default is "t8.24".
460
461           s[size[.mincount[.maxcount]]]
462               Specifes a SSE (secondary symbol estimator). A SSE takes the
463               last size bits of context and the quantized and interpolated
464               prediction of the previous component as input to output an
465               adjusted prediction. The output is adjusted to reduce the
466               prediction error by 1/count, where the count is constrained
467               between mincount and 4 x maxcount. The default is "s8.32.255".
468
469           iorder[.increment]...
470               Specifies an ISSE (indirect secondary symbol estimator) chain.
471               An ISSE adjusts the predition of the previous component by
472               mixing it with a constant 1.  The pair of mixing weights is
473               selected by a bit history state (like an ICM).  The bit history
474               is selected by a hash of the last order bytes hashed together
475               with the context of the previous component. Each increment
476               specifies an additional ISSE whose context order is increased
477               by increment. For example, "ci1.1.2" specifies an order 0 ICM
478               and order 1, 2, and 4 ISSEs.
479
480           w[order[.A[.Z[.cap[.mul[.mem]]]]]]
481               Specifies an ICM-ISSE chain of length order taking as contexts
482               the hashes of the last 1, 2, 3..., order whole words. A word is
483               defined as a sequence of characters in the range A to A + Z -
484               1, ANDed with cap before hashing. The hash H is updated by byte
485               c as H := (H x mul + c) (mod 2^(blocksize + 24 - mem)).  Each
486               component requires 2^(blocksize - mem) MiB. The default is
487               "w1.65.26.223.20.0", which defines a word as 65..90 (A..Z).
488               ANDing with 223 converts to upper case before hashing. mul = 20
489               has the effect of shifting 2 bits left. For typical block sizes
490               (28 or 30 bit H), the word hash depends on the last 14 or 15
491               letters.
492
493           a[mul[.bmem][.hmem]]]
494               Specifies a MATCH. A MATCH searches for a past matching context
495               and predicts whatever bit came next. The search is done by
496               updating a context hash H with byte c by H := H x mul + c (mod
497               2^(blocksize + 18 - hmem)).  A MATCH uses 2^(blocksize - bmem)
498               MiB history buffer and a 2^(blocksize - hmem) MiB hash table.
499               The default is a24.0.0.  If blocksize is 6, then H is 24 bits.
500               mul = 24 shifts 4 bits left, making the context hash
501               effectively order 6.
502
503       -noattributes
504           With "add", do not save Windows attributes or Unix/Linux
505           permissions to the archive. With "extract", ignore the saved values
506           and extract using default values. With "list", do not list or
507           compare attributes.
508
509       -not [file]...
510       -not =[#+-?^]...
511           In the first form, do not add, extract, or list files that match
512           any file by name. file may contain wildcards "*" and "?" that match
513           any string or character respectively, including "/". A match to a
514           directory also matches all of its contents. In Windows, matches are
515           not case sensitive, and "\" matches "/". In Unix/Linux, arguments
516           with wildcards must be quoted to protect them from the shell.
517
518           When comparing with "list" files, "-not =" means do not list
519           identical files. Additonally it is possible to suppress listing of
520           differences with "#", missing external files with "-", missing
521           internal files with "+", and duplicates ("list -summary") with "^".
522
523       -only file...
524           Do not add, extract, or list any files unless they match at least
525           one argument. The rules for matching wildcards are the same as
526           "-not". The default is "*" which matches everything.
527
528           If a file matches an argument to both "-only" and "-not", then
529           "-not" takes precedence.
530
531       -repack new_archive [new_password]
532           With "extract", store the extracted files in new_archive instead of
533           writing them individually to disk. If new_password is specified,
534           then the output is encrypted with this password. Otherwise the
535           output is not encrypted, even if the input is.
536
537           It is an error if new_archive exists unless "-force" is used to
538           allow it to be overwritten.  new_archive does not automatically get
539           a ".zpaq" extension.
540
541           Repacking is implemented by copying those D blocks (compressed file
542           contents) which are referenced by at least one selected file. This
543           can result in a larger archive than a new one because unreferenced
544           fragments in the same block are also copied.
545
546           The repacked archive block dates range from the first to last
547           update of the input archive. Using "add -until" with a date between
548           these two dates will result in the date being adjust to 1 second
549           after the last update.
550
551           With "-all", the input archive is simply copied without
552           modification except to decrypt and encrypt. Thus, the input may be
553           any file, not just an archive. files and the options "-to", "-not",
554           "-only", "-until", "-noattributes", and "-method" are not valid
555           with "-repack -all".
556
557       -sN
558       -summary N
559           With "list", sort by decreasing size and show only the N largest
560           files and directories. Label duplicates of the previous file with
561           "^". A file is a duplicate if its contents are identical (based on
562           stored hashes) although the name, dates, and attributes may differ.
563           If files is specified, then these are included in the listing but
564           not compared with internal files or each other.  Internal and
565           external files are labeled with "-" and "+" respectively.
566
567           If N is negative as in "-s-1" then list normally but show fragment
568           IDs after each file name. Files with identical fragment IDs have
569           identical contents.
570
571           With "add" and "extract", when N > 0, do not list files as they are
572           added or extracted. Show only percent completed and estimated time
573           remaining on a 1 line display.
574
575       -test
576           With "extract", do not write to disk, but perform all other
577           operations normally. "extract" will decompress, compute the SHA-1
578           hashes of the output, report if it differs from the stored value,
579           but not compare, create or update any files. With "-index", test
580           for errors but do not create an index file.
581
582       -tN
583       -threads N
584           Add or extract at most N blocks in parallel. The default is 0,
585           which uses the number of processor cores, except not more than 2
586           when when zpaq is compiled to 32-bit code. Selecting fewer threads
587           will reduce memory usage but run slower. Selecting more threads
588           than cores does not help.
589
590       -to name...
591           With "add" and "list" rename external files to respective internal
592           names. With "extract", rename internal files to external names.
593           When files is empty, prefix the extracted files with the first name
594           in names, inserting "/" if needed and removing ":" from drive
595           letters. For example:
596
597               zpaq extract archive file dir -to newfile newdir
598
599           extracts "file" as "newfile" and "dir" as "newdir".
600
601               zpaq extract archive -to tmp
602
603           will extract "foo" or "/foo" as "tmp/foo" and extract "C:/foo" or
604           "C:foo" as "tmp/C/foo".
605
606               zpaq add archive dir -to newdir
607
608           will save "dir/file" as "newdir/file", and so on.
609
610               zpaq list archive dir -to newdir
611
612           will compare external "dir" with internal "newdir".
613
614           The "-only" and "-not" options apply prior to renaming.
615
616       -until date | [-]version
617           Ignore any part of the archive updated after date or after version
618           updates or -versions from the end if negative.  Additionally, "add"
619           will truncate the archive at this point before appending the next
620           update. When a date is specified, the update will be timestamped
621           with date rather than the current date.
622
623           A date is specified as a 4 digit year (1900 to 2999), 2 digit month
624           (01 to 12), 2 digit day (01 to 31), optional 2 digit hour (00 to
625           23, default 23), optional 2 digit minute (00 to 59, default 59),
626           and optional 2 digit seconds (00 to 59, default 59). Dates and
627           times are always universal time zone (UT), not local time. Numbers
628           up to 9999999 are interpreted as version numbers rather than dates.
629           Dates may contain spaces and punctuation characters for readability
630           but are ignored. For example:
631
632               zpaq list backup -until 3
633
634           shows the archive as it existed after the first 3 updates.
635
636               zpaq add backup files -until 2014/04/30 11:30
637
638           truncates any data added after April 30, 2014 at 11:30:59 universal
639           time, then appends the update as if this were the current time. (It
640           does not matter if any files are dated in the future).
641
642               zpaq add backup files -until 0
643
644           deletes backup.zpaq and creates a new archive.
645
646           "add -until" is an error on multi-part archives or with an index.
647           A multi-part archive can be rolled back by deleting the highest
648           numbered parts.
649
650           Truncating and appending an encrypted archive with "add -until"
651           (even "-until 0") does not change the salt or keystream. Thus, it
652           is possible for an attacker with the old and new versions to obtain
653           the XOR of the trailing plaintexts without a password.
654

EXIT STATUS

656       Returns 0 if successful, 1 in case of warnings, or 2 in case of an
657       error.
658

ENVIRONMENT

660       In Windows, the default number of threads (set by "-threads") is
661       %NUMBER_OF_PROCESSORS%. In Linux, the number of lines of the form
662       "Processor : 0", "Processor : 1",... in /cpu/procinfo is used instead.
663

STANDARDS

665       The archive format is described in The ZPAQ Open Standard Format for
666       Highly Compressed Data (see AVAILABILITY).
667

AVAILABILITY

669       http://mattmahoney.net/zpaq/
670

BUGS

672       There is no GUI.
673
674       The archive format does not save sufficient information for backing up
675       and restoring the operating system.
676

SEE ALSO

678       bzip2(1) gzip(1) lrzip(1) lzop(1) lzma(1) p7zip(1) rzip(1) unace(1)
679       unrar(1) unzip(1) zip(1)
680

AUTHORS

682       "zpaq" and "libzpaq" are written by Matt Mahoney and released to the
683       public domain in 2015-2016. "libzpaq" contains libdivsufsort-lite
684       v2.01, copyright (C) 2003-2008, Yuta Mori. It is licensed under the MIT
685       license. See the source code for license text. The AES code is modified
686       from libtomcrypt by Tom St Denis (public domain).  The salsa20/8 code
687       in Scrypt() is by D. J. Bernstein (public domain).
688
689
690
691perl v5.36.0                      2022-07-23                           ZPAQ(1)
Impressum