1ZPAQ(1) User Contributed Perl Documentation ZPAQ(1)
2
3
4
6 zpaq - Journaling archiver for incremental backups.
7
9 zpaq command archive[".zpaq"] [files]... [-options]...
10
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
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
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
656 Returns 0 if successful, 1 in case of warnings, or 2 in case of an
657 error.
658
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
665 The archive format is described in The ZPAQ Open Standard Format for
666 Highly Compressed Data (see AVAILABILITY).
667
669 http://mattmahoney.net/zpaq/
670
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
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
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.38.0 2023-07-22 ZPAQ(1)