Provided by: zpaq_7.15+repack-1_amd64 bug

NAME

       zpaq - Journaling archiver for incremental backups.

SYNOPSIS

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

DESCRIPTION

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

COMMANDS

       command is one of "add", "extract", or "list" Commands may be abbreviated to "a", "x", or "l"
       respectively.  archive is assumed to have a ".zpaq" extension if no extension is specified.

       If archive contains wildcards "*" or "?", then the archive is in multiple parts where "*" matches the
       part number and "?" matches single digits. zpaq will consider the concatenation of the parts in numerical
       order starting with 1 to be equivalent to a single archive.  For example, "arc??" would match the
       concatenation of "arc01.zpaq", "arc02.zpaq", etc. up to the last existing part.

       a
       add Append  changes  in files to archive, or create archive if it does not exist. files is a list of file
           and directory names separated by spaces. If a name is a directory, then it recursively  includes  all
           files  and  subdirectories  within.  In  Windows, files may contain wildcards "*" and "?" in the last
           component of the path (after the last slash).  "*" matches any string and "?" matches any  character.
           In Unix/Linux, wildcards are expanded by the shell, which has the same effect.

           A  change  is  an  addition,  update,  or  deletion  of  any file or directory in files or any of its
           subdirectories to any depth. A file or directory is considered changed if its size  or  last-modified
           date  (with  1  second resolution), or Windows attributes or Unix/Linux permissions (if saved) differ
           between the internal and external versions. File contents are not compared. If the attributes but not
           the date has changed, then the attributes are updated in the archive with  the  assumption  that  the
           file contents have not changed.

           Files  are added by splitting them into fragments along content-dependent boundaries, computing their
           SHA-1 hashes, and comparing with hashes already stored in the archive. If the  hash  matches,  it  is
           assumed  that  the  fragments are identical and only a pointer to the previous compressed fragment is
           saved. Unmatched fragments are packed into blocks, compressed, and appended to the archive.

           For each added or updated file or directory, the following information is saved in the  archive:  the
           compressed  contents,  fragment  hashes,  the  file or directory name as it appears in files plus any
           trailing path, the last-modified date with 1 second resolution, and  the  Unix/Linux  permissions  or
           Windows  attributes. Other metadata such as owner, group, ACLs, last access time, etc. are not saved.
           Symbolic links are not saved or followed.  Hard links are followed as if they  were  ordinary  files.
           Special file types such as devices, named pipes, and named sockets are not saved.  The 64 bit Windows
           version will save alternate data streams.

           If  any  file  cannot be read (e.g. permission denied), then it is skipped and a warning is reported.
           However, other files are still added and the update is still valid.

           If archive is "" (a quoted empty string), then zpaq compresses files as if creating  a  new  archive,
           but discards the output without writing to disk.

           If  archive  is multi-part, the zpaq will create a new part using the next available part number. For
           example:

               zpaq add "arc??" files   (creates arc01.zpaq)
               zpaq add "arc??" files   (creates arc02.zpaq)
               zpaq add "arc??" files   (creates arc03.zpaq)
               zpaq extract "arc??"     (extracts all parts)

           Updates are transacted. If zpaq is interrupted before  completing  the  update,  then  the  partially
           appended  data is ignored and overwritten on the next update. This is accomplished by first appending
           a temporary update header, appending the compressed data and index, then updating the header  as  the
           last step.

           As  the  archive  is updated, the program will report the percent complete, estimated time remaining,
           the name and size of the file preceded by "+" if the file is being added, "#" if updated, or  "-"  if
           deleted. If the file is deduplicated, then the new size after deduplication but before compression is
           shown.

       x
       extract
           Extract files (including the contents of directories), or extract the whole archive contents if files
           is  omitted.  The file names, last-modified date, and permissions or attributes are restored as saved
           in the archive.  If there are multiple versions of a file stored, then only  the  latest  version  is
           extracted. If a stored file has been marked as deleted, then it is not extracted.

           Existing files are skipped without being overwritten. (Use "-force" to overwrite).

           As  files  are extracted, the fragment SHA-1 hashes are computed and compared with the stored hashes.
           The program reports an error in case of mismatches.  Blocks are only decompressed up to the last used
           fragment.  If the archive is damaged, then zpaq will extract as much as possible from  the  undamaged
           blocks.

           As  files are extracted, the program reports the percent completed, estimated time remaining, and the
           name of the file preceded by ">" if the file is created or overwritten (with "-force"),  "?"  if  the
           file  is  skipped because it already exists, or "=" if decompression is skipped with "-force" because
           the contents were compared and found to be identical. The date and attributes are still extracted  in
           this case.

       l
       list
           List the archive contents. With files, list only the specified files and directories and compare them
           with  the  same files on disk.  For each file or directory, show the comparison result, last modified
           date, uncompressed size, Windows attributes or Unix/Linux permissions, and the  saved  name.  If  the
           internal and external versions of the file differ, then show both.

           The  comparison  result  is reported in the first column as "=" if the last-modified date, attributes
           (if saved), and size are identical, "#" if different, "-" if the external file does not exist, or "+"
           if the internal file does not exist. With "-force", the contents are compared, but not the  dates  or
           attributes. Contents are compared by reading the files, computing SHA-1 hashes and comparing with the
           stored  hashes.  In  either case, replacing "list" with "add" will show exactly what changes would be
           made to the archive.

           In Unix/Linux, permissions are listed as a file type "d" for directory or blank for a  regular  file,
           followed  by  a  4 digit octal number as per chmod(1). In Windows, attributes are listed from the set
           "RHS DAdFTprCoIEivs" where the character is present if the corresponding bit 0..17 is set as returned
           by GetFileAttributes().  The  meanings  are  as  follows:  "R"ead-only,  "H"idden,  "S"ystem,  unused
           (blank),  "D"irectory,  "A"rchive,  "d"evice,  normal  "F"ile,  "T"emporary, s"p"arse file, "r"eparse
           point, "C"ompressed, "o"ffline, not content "I"indexed, "E"ncrypted, "i"ntegrity  stream,  "v"irtual,
           no "s"crub data.

           archive may be "", which is equivalent to comparing with an empty archive.

OPTIONS

       -all [N]
           With  "list",  list  all saved versions and not just the latest version, including versions where the
           file is marked as deleted. Each version is shown in a  separate  numbered  directory  beginning  with
           "0001/".   Absolute  paths  are  first  converted to relative paths. In Windows, the ":" on the drive
           letter is removed. For example, "foo" and "/foo" are shown as "0001/foo". "C:/foo"  and  "C:foo"  are
           shown as "0001/C/foo".

           The  date  shown  on the root directory of each version is the date of the update. The root directory
           listing also shows the number of updates and deletions in that version and the compressed size.

           When a file is deleted, it is shown with the dates and attributes blank with size 0.

           With "extract", extract the files in each version as shown with "list -all".

           N selects the number of digits in the directory name. The default is 4.  More  digits  will  be  used
           when necessary. For example:

               zpaq list archive -all 2 -not "??/?*"

           will show the dates when the archive was updated as "01/", "02/", etc. but not their contents.

       -f
       -force
           With "add", attempt to add files even if the last-modified date has not changed. Files are added only
           if they really are different, based on comparing the computed and stored SHA-1 hashes

           With  "extract",  overwrite  existing output files. If the contents differ (tested by comparing SHA-1
           hashes), then the file is decompressed and extracted. If the dates or attributes/permissions  differ,
           then they are set to match those stored in the archive.

           With "list" files, compare files by computing SHA-1 fragment hashes and comparing with stored hashes.
           Ignore differences in dates and attributes.

       -fragment N
           Set  the  dedupe  fragment  size range from 64 2^N to 8128 2^N bytes with an average size of 1024 2^N
           bytes. The default is 6 (range 4096..520192, average  65536).  Smaller  fragment  sizes  can  improve
           compression  through  deduplication of similar files, but require more memory and more overhead. Each
           fragment adds about 28 bytes to the archive and requires about 40 bytes of memory. For  the  default,
           this is less than 0.1% of the archive size.

           Values  other than 6 conform to the ZPAQ specification and will decompress correctly by all versions,
           but do not conform to  the  recommendation  for  best  deduplication.  Adding  identical  files  with
           different  values  of  N  will  not  deduplicate  because the fragment boundaries will differ.  "list
           -summary" will not identify these files as identical for the same reason.

       -index indexfile
           With "add", create archive".zpaq" as a suffix to append to a remote archive which is  assumed  to  be
           identical  to  indexfile except that indexfile contains no compressed file contents (D blocks).  Then
           update indexfile by appending a copy of archive".zpaq" without the D blocks. With "extract",  specify
           the index to create for archive".zpaq" and do not extract any files.

           The  purpose is to maintain a backup offsite without using much local disk space. The normal usage is
           to append the suffix at the remote site and delete it locally, keeping only the much  smaller  index.
           For example:

               zpaq add part files -index index.zpaq
               cat part.zpaq >> remote.zpaq
               rm part.zpaq

           indexfile  has  no  default extension. However, with a ".zpaq" extension it can be listed to show the
           contents of the remote archive or compare with local files. It cannot be extracted or  updated  as  a
           regular archive. Thus, the following should produce identical output:

               zpaq list remote.zpaq
               zpaq list index.zpaq

           If  archive  is  multi-part (contains "*" or "?"), then zpaq will substitute a part number equal to 1
           plus the number of previous updates.  The parts may then be accessed as a multi-part archive  without
           appending or renaming.

           With  "add", it is an error if the archive to be created already exists, or if indexfile is a regular
           archive. "-index" cannot be  used  with  "-until"  or  a  streaming  archive  "-method  s...".   With
           "extract", it is an error if indexfile exists and "-force" is not used to overwrite.

       -key password
           This  option  is  required  for  all commands operating on an encrypted archive.  When creating a new
           archive with "add", the new archive will be encrypted with password  and  all  subsequent  operations
           will require the same password.

           An   archive   is   encrypted   with  AES-256  in  CTR  mode.  The  password  is  strengthened  using
           Scrypt(SHA-256(password), salt, N=16384, r=8, p=1), which would require 208M  operations  and  16  MB
           memory  per  test  in  a  brute  force  key  search.   When creating a new archive, a 32 byte salt is
           generated using CryptGenRandom() in Windows or from /dev/urandom in Unix/Linux, such that  the  first
           byte  is  different from the normal header of an unencrypted archive ("z" or 7). A multi-part archive
           is encrypted with a single keystream as if the parts were concatenated.  An index is  encrypted  with
           the same password, where the first byte of the salt is modified by XOR with ('z' XOR '7').

           Encryption  provides  secrecy  but not authentication. An attacker who knows or can guess any bits of
           the plaintext can set them without knowing the key.

       -mtype[Blocksize[.pre[.arg][comp[.arg]]...]]
       -method type[Blocksize[.pre[.arg][comp[.arg]]...]]
           With "add", select a compression method. type may be 0, 1, 2, 3, 4, 5,  "x",  or  "s".  The  optional
           Blocksize  may  be  0..11,  written  with  no space after the type, like "-m10" or "-method 511". The
           remaining arguments, separated by periods or commas without spaces, are only allowed for types "x" or
           "s", for example "-mx4.3ci1".

           If type is numeric, then higher numbers compress better but are slower.  The default is "-m1". It  is
           recommended  for  backups.  "-m2"  compresses  slower  but  decompresses  just  as  fast  as 1. It is
           recommended for archives to be compressed once and decompressed many times, such as downloads.  "-m0"
           stores with deduplication but no further compression.

           Blocksize  says  to pack fragments into blocks up to 2^Blocksize MiB. Using larger blocks can improve
           compression but require  more  memory  and  may  be  slower  because  each  block  is  compressed  or
           decompressed  by a separate thread.  The memory requirement is up to 8 times Blocksize per thread for
           levels up to 4 and 16 times block size per thread for level 5.  The default Blocksize is 4  (16  MiB)
           for types 0 and 1, and 6 (64 MiB) otherwise.

           Types "x" and "s" are for experimental use. Normally, zpaq selects different methods depending on the
           compression  level  and  an  analysis  of  the data (text, executable, or other binary, and degree of
           compressibility).   type  selects  journaling  or  streaming  format.   pre  is  0..7   selecting   a
           preprocessing  step  (LZ77,  BWT, E8E9), comp is a series of context modeling components from the set
           {c,i,a,w,m,s,t} selecting a CM or ICM, ISSE chain, MATCH, word model, MIX, SSE, or MIX2 respectively.
           pre and comp may be followed by a list of numeric arguments (arg) separated  by  periods  or  commas.
           For example:

               -method x6.3ci1

           selects a journaling archive (x), block size 2^6 = 64 MiB, BWT transform (3), an order 0 ICM (c), and
           order  1  ISSE  (i1).  (zpaq  normally  selects this method for level 3 text compression). type is as
           follows.

           x   Selects normal (journaling) mode. Files are  split  into  fragments,  deduplicated,  packed  into
               blocks,  and  compressed  by  the  method  described.  The  compressed  blocks  are preceded by a
               transaction header giving the date of the update.  The blocks are followed by a list of  fragment
               hashes and sizes and a list of files added, updated, or deleted. Each added or updated file lists
               the last-modifed date, attributes, and a list of fragment IDs.

           s   Selectes  streaming mode for single-pass extraction and compatibility with zpaq versions prior to
               6.00 (2012). Streaming archives do not support deduplication or rollback. Files  are  split  into
               fragments  of  size  2^blocksize  MiB  - 4 KiB. Each file or fragment is compressed in a separate
               block with no attempt at deduplication. The file name, date, and attributes  are  stored  in  the
               header  of  the  first fragment. The hashes are stored in the trailers of each block. There is no
               transaction block to allow rollback. Files are added to the previously dated  update.   Streaming
               mode with "-index" is an error.

           pre[.min1.min2.depth.size[.lookahead]]
               pre selects a pre/post processing step before context modeling as follows.

                   0 = no preprocessing
                   1 = Packed LZ77
                   2 = Byte aligned LZ77
                   3 = BWT (Burrows-Wheeler Transform)
                   4 = E8E9
                   5 = E8E9 + packed LZ77
                   6 = E8E9 + byte aligned LZ77
                   7 = E8E9 + BWT

               The  E8E9  transform  (4..7) improves the compression of x86 executable files (.exe or .dll). The
               transform scans backward for 5 byte patterns of the form (E8|E9 xx xx xx 00|FF) hex and adds  the
               block offset to the three middle bytes. The E8 and E9 opcodes are CALL and JMP, respectively. The
               transform  replaces relative addresses with absolute addresses. The transform is applied prior to
               LZ77 or BWT. Decompression reverses the transforms in the opposite order.

               LZ77 (1, 2, 5, 6) compresses by searching for matching strings using a hash table or suffix array
               and replacing them with pointers to the previous match. Types 1 and 2 select variable bit  length
               coding  or  byte  aligned coding respectively.  Variable bit length encoding compresses better by
               itself, but byte aligned coding allows for further compression using a context  model.   Types  6
               and 7 are the same as 1 and 2 respectively, except that the block is E8E9 transformed first.

               BWT  (Burrows  Wheeler  Transform,  3 or 7), sorts the input block by context, which brings bytes
               with similar contexts together. It does not compress by itself, but makes  the  input  suited  to
               compression with a fast adapting low order context model.

               The remaining arguments apply only to LZ77.  min1 selects the minimum match length, which must be
               at least 4 for packed LZ77 or 1 for byte aligned LZ77. min2 selects a longer minimum match length
               to  try  first,  or  is  0  to  skip this step. The block is encoded by testing 2^depth locations
               indexed by a hash table of 2^size elements indexed by hashes of  the  next  min2  and  then  min1
               characters.  If lookahead is specified and greater than 0, then, the search is repeated lookahead
               + 1 times to consider coding the next 0 to lookahead bytes as literals to find a longer match.

               If size = blocksize + 21, then matches are found using a suffix array instead of  a  hash  table,
               scanning  forward  and  backward  2^depth  elements  to  find the longest past match. min2 has no
               effect.  A suffix array requires 4.5 x 2^blocksize MiB memory. A hash table requires 4  x  2^size
               bytes memory. For example:

                   -method x6.1.4.0.5.27.1

               specifies  64  MiB  blocks (6), variable length LZ77 without E8E9 (1), minimum match length 4, no
               secondary search (0), search depth 2^5 = 32 in each direction in the suffix array (27 = 6 +  21),
               and 1 byte lookahead.

           comp  specifies a component of a context model. If this section is empty, then no further compression
           is performed. Otherwise the block is compressed by an array of components.  Each  component  takes  a
           context  and possibly the outputs of earlier components, and outputs a prediction, a probability that
           the next bit of input is a 1.  The final prediction is used to arithmetic code the  bit.   Components
           normally  allocate memory equal to the block size, or less for smaller contexts as needed. Components
           are as follows:

           c[.maxcount[.offset[.mask]...]]
               Specifies a context model (CM), or indirect context model (ICM). A CM maps a context  hash  to  a
               prediction  by  looking  up the context in a table, and then adjusts the prediction to reduce the
               coding error by 1/count, where count is bounded by maxcount x 4, and maxcount is in 1..255.

               If maxcount is 0, then specify an ICM. An ICM maps a context to  a  state  representing  two  bit
               counts and the most recent bit. That state is mapped to a prediction and updated at a fixed rate.
               An  ICM  adapts  faster to changing statistics. A CM with a high count compresses stationary data
               better. The default is 0 (ICM).

               If maxcount has the form 1000m + n, then the effect is the same as maxcount =  n  while  reducing
               memory to 1/2^m of block size.

               The  remaining  arguments  represent  contexts,  all  of  which are hashed together. If offset is
               1..255, then the block offset mod offset is hashed in. If offset is 1000..1255, then the distance
               to the last occurrence of offset - 1000 is hashed in. For example,  "c0.1010"  specifies  an  ICM
               taking  the  text column number (distance back to the last linefeed = 10) as context. The default
               is 0 (no context).

               Each mask is ANDed with previous bytes. For example, "c0.0.255.255.255" is an ICM  with  order  3
               context.  A  value  in  256..511  specifies a context of mask - 256 hashed together with the byte
               aligned LZ77 parse state (whether a literal or match code is  expected).  For  example,  "-method
               x6.2.12.0.8.27c0.0.511.255"  specifes  block  size  2^6 MiB, byte aligned LZ77 (2), minimum match
               length 12, search depth 2^8, suffix array search (27 = 6 + 21), an ICM (c0),  no  offset  context
               (0), and order 2 context plus LZ77 state (511.255).

               A  mask  greater  than  1000  is shorthand for mask - 1000 zeros. For example, the sparse context
               "c0.0.255.1003.255" is equivalent to "c0.0.255.0.0.0.255".

           m[size[.rate]]
               Specifies a MIX (mixer). A MIX computes a weighted average of the  predictions  of  all  previous
               components.  (The  averaging  is  in the logistic domain: log(p / (1 - p))). The weights are then
               adjusted in proportion to rate (0..255) to reduce the prediction error. A size bit context can be
               used to select a set of weights to be used. The first 8 bits of context are the previously  coded
               bits of the current byte. The default is "m8.24".  A MIX with n inputs requires 4n x 2^size bytes
               of memory.

           t[size[.rate]]
               Specifies  a MIX2. A MIX2 is like a MIX except that it takes only the last 2 components as input,
               and its weights are constrained to add to 1.  A MIX2 requires 4 x 2^size  bytes  of  memory.  The
               default is "t8.24".

           s[size[.mincount[.maxcount]]]
               Specifes  a  SSE  (secondary symbol estimator). A SSE takes the last size bits of context and the
               quantized and interpolated prediction of the previous component as input to  output  an  adjusted
               prediction.  The output is adjusted to reduce the prediction error by 1/count, where the count is
               constrained between mincount and 4 x maxcount. The default is "s8.32.255".

           iorder[.increment]...
               Specifies an ISSE (indirect secondary symbol estimator) chain. An ISSE adjusts the  predition  of
               the previous component by mixing it with a constant 1.  The pair of mixing weights is selected by
               a bit history state (like an ICM).  The bit history is selected by a hash of the last order bytes
               hashed  together  with  the  context  of  the  previous  component.  Each  increment specifies an
               additional ISSE whose context order is increased by increment. For example,  "ci1.1.2"  specifies
               an order 0 ICM and order 1, 2, and 4 ISSEs.

           w[order[.A[.Z[.cap[.mul[.mem]]]]]]
               Specifies an ICM-ISSE chain of length order taking as contexts the hashes of the last 1, 2, 3...,
               order  whole  words.  A  word is defined as a sequence of characters in the range A to A + Z - 1,
               ANDed with cap before hashing. The hash H is updated by byte c as  H  :=  (H  x  mul  +  c)  (mod
               2^(blocksize  +  24  -  mem)).   Each  component requires 2^(blocksize - mem) MiB. The default is
               "w1.65.26.223.20.0", which defines a word as 65..90 (A..Z). ANDing with  223  converts  to  upper
               case before hashing. mul = 20 has the effect of shifting 2 bits left. For typical block sizes (28
               or 30 bit H), the word hash depends on the last 14 or 15 letters.

           a[mul[.bmem][.hmem]]]
               Specifies  a  MATCH.  A MATCH searches for a past matching context and predicts whatever bit came
               next. The search is done by updating a context hash H with byte c by H  :=  H  x  mul  +  c  (mod
               2^(blocksize  +  18  -  hmem)).   A  MATCH  uses  2^(blocksize  -  bmem) MiB history buffer and a
               2^(blocksize - hmem) MiB hash table. The default is a24.0.0.  If blocksize is 6,  then  H  is  24
               bits. mul = 24 shifts 4 bits left, making the context hash effectively order 6.

       -noattributes
           With  "add", do not save Windows attributes or Unix/Linux permissions to the archive. With "extract",
           ignore the saved values and extract using default  values.  With  "list",  do  not  list  or  compare
           attributes.

       -not [file]...
       -not =[#+-?^]...
           In  the  first form, do not add, extract, or list files that match any file by name. file may contain
           wildcards "*" and "?" that match any string or character respectively, including "/". A  match  to  a
           directory  also  matches  all  of  its  contents. In Windows, matches are not case sensitive, and "\"
           matches "/". In Unix/Linux, arguments with wildcards must be quoted to protect them from the shell.

           When comparing with "list" files, "-not =" means do not list  identical  files.  Additionally  it  is
           possible  to  suppress  listing  of  differences  with  "#", missing external files with "-", missing
           internal files with "+", and duplicates ("list -summary") with "^".

       -only file...
           Do not add, extract, or list any files unless they  match  at  least  one  argument.  The  rules  for
           matching wildcards are the same as "-not". The default is "*" which matches everything.

           If a file matches an argument to both "-only" and "-not", then "-not" takes precedence.

       -repack new_archive [new_password]
           With  "extract",  store  the  extracted  files in new_archive instead of writing them individually to
           disk. If new_password is specified, then the output is encrypted with this  password.  Otherwise  the
           output is not encrypted, even if the input is.

           It  is  an  error  if  new_archive  exists  unless  "-force"  is  used to allow it to be overwritten.
           new_archive does not automatically get a ".zpaq" extension.

           Repacking is implemented by copying those D blocks (compressed file contents) which are referenced by
           at least one selected file. This can result in a larger archive than a new one  because  unreferenced
           fragments in the same block are also copied.

           The repacked archive block dates range from the first to last update of the input archive. Using "add
           -until"  with  a  date between these two dates will result in the date being adjust to 1 second after
           the last update.

           With "-all", the input archive is simply copied without modification except to decrypt  and  encrypt.
           Thus,  the  input may be any file, not just an archive. files and the options "-to", "-not", "-only",
           "-until", "-noattributes", and "-method" are not valid with "-repack -all".

       -sN
       -summary N
           With "list", sort by decreasing size and show  only  the  N  largest  files  and  directories.  Label
           duplicates  of the previous file with "^". A file is a duplicate if its contents are identical (based
           on stored hashes) although the name, dates, and attributes may differ. If files  is  specified,  then
           these  are  included in the listing but not compared with internal files or each other.  Internal and
           external files are labeled with "-" and "+" respectively.

           If N is negative as in "-s-1" then list normally but show fragment IDs after each  file  name.  Files
           with identical fragment IDs have identical contents.

           With  "add"  and  "extract",  when N > 0, do not list files as they are added or extracted. Show only
           percent completed and estimated time remaining on a 1 line display.

       -test
           With "extract", do not write to disk, but perform  all  other  operations  normally.  "extract"  will
           decompress,  compute  the SHA-1 hashes of the output, report if it differs from the stored value, but
           not compare, create or update any files. With "-index", test for errors but do not  create  an  index
           file.

       -tN
       -threads N
           Add  or  extract  at  most N blocks in parallel. The default is 0, which uses the number of processor
           cores, except not more than 2 when when zpaq is compiled to 32-bit code. Selecting fewer threads will
           reduce memory usage but run slower. Selecting more threads than cores does not help.

       -to name...
           With "add" and "list" rename external files to respective  internal  names.  With  "extract",  rename
           internal files to external names. When files is empty, prefix the extracted files with the first name
           in names, inserting "/" if needed and removing ":" from drive letters. For example:

               zpaq extract archive file dir -to newfile newdir

           extracts "file" as "newfile" and "dir" as "newdir".

               zpaq extract archive -to tmp

           will extract "foo" or "/foo" as "tmp/foo" and extract "C:/foo" or "C:foo" as "tmp/C/foo".

               zpaq add archive dir -to newdir

           will save "dir/file" as "newdir/file", and so on.

               zpaq list archive dir -to newdir

           will compare external "dir" with internal "newdir".

           The "-only" and "-not" options apply prior to renaming.

       -until date | [-]version
           Ignore  any part of the archive updated after date or after version updates or -versions from the end
           if negative.  Additionally, "add" will truncate the archive at this point before appending  the  next
           update.  When  a  date is specified, the update will be timestamped with date rather than the current
           date.

           A date is specified as a 4 digit year (1900 to 2999), 2 digit month (01 to 12), 2 digit  day  (01  to
           31),  optional  2  digit hour (00 to 23, default 23), optional 2 digit minute (00 to 59, default 59),
           and optional 2 digit seconds (00 to 59, default 59). Dates and times are always universal  time  zone
           (UT),  not  local  time.  Numbers up to 9999999 are interpreted as version numbers rather than dates.
           Dates may contain spaces and punctuation characters for readability but are ignored. For example:

               zpaq list backup -until 3

           shows the archive as it existed after the first 3 updates.

               zpaq add backup files -until 2014/04/30 11:30

           truncates any data added after April 30, 2014 at 11:30:59 universal time, then appends the update  as
           if this were the current time. (It does not matter if any files are dated in the future).

               zpaq add backup files -until 0

           deletes backup.zpaq and creates a new archive.

           "add -until" is an error on multi-part archives or with an index.  A multi-part archive can be rolled
           back by deleting the highest numbered parts.

           Truncating and appending an encrypted archive with "add -until" (even "-until 0") does not change the
           salt  or  keystream. Thus, it is possible for an attacker with the old and new versions to obtain the
           XOR of the trailing plaintexts without a password.

EXIT STATUS

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

ENVIRONMENT

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

STANDARDS

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

AVAILABILITY

       http://mattmahoney.net/zpaq/

BUGS

       There is no GUI.

       The archive format does not save sufficient information  for  backing  up  and  restoring  the  operating
       system.

SEE ALSO

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

AUTHORS

       "zpaq"  and  "libzpaq"  are  written  by  Matt  Mahoney  and  released to the public domain in 2015-2016.
       "libzpaq" contains libdivsufsort-lite v2.01, copyright (C) 2003-2008, Yuta Mori. It is licensed under the
       MIT license. See the source code for license text. The AES code is modified from libtomcrypt  by  Tom  St
       Denis (public domain).  The salsa20/8 code in Scrypt() is by D. J. Bernstein (public domain).

perl v5.32.0                                       2021-01-05                                            ZPAQ(1)