diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2022-02-21 16:13:23 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2022-02-21 16:13:38 +0000 |
commit | 8d5e33286b086ade0252489ca201eb1aa061c5dc (patch) | |
tree | ab7905d319ede338e79626e6b5e21705c90c1a2a /doc | |
parent | Releasing debian version 1.22-3. (diff) | |
download | lziprecover-8d5e33286b086ade0252489ca201eb1aa061c5dc.tar.xz lziprecover-8d5e33286b086ade0252489ca201eb1aa061c5dc.zip |
Merging upstream version 1.23.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/lziprecover.1 | 20 | ||||
-rw-r--r-- | doc/lziprecover.info | 175 | ||||
-rw-r--r-- | doc/lziprecover.texi | 138 |
3 files changed, 186 insertions, 147 deletions
diff --git a/doc/lziprecover.1 b/doc/lziprecover.1 index eefa0b9..e05a366 100644 --- a/doc/lziprecover.1 +++ b/doc/lziprecover.1 @@ -1,5 +1,5 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.16. -.TH LZIPRECOVER "1" "January 2021" "lziprecover 1.22" "User Commands" +.TH LZIPRECOVER "1" "January 2022" "lziprecover 1.23" "User Commands" .SH NAME lziprecover \- recovers data from damaged lzip files .SH SYNOPSIS @@ -8,15 +8,13 @@ lziprecover \- recovers data from damaged lzip files .SH DESCRIPTION Lziprecover is a data recovery tool and decompressor for files in the lzip compressed data format (.lz). Lziprecover is able to repair slightly damaged -files, produce a correct file by merging the good parts of two or more -damaged copies, reproduce a missing (zeroed) sector using a reference file, -extract data from damaged files, decompress files, and test integrity of -files. +files (up to one single\-byte error per member), produce a correct file by +merging the good parts of two or more damaged copies, reproduce a missing +(zeroed) sector using a reference file, extract data from damaged files, +decompress files, and test integrity of files. .PP -Lziprecover can repair perfectly most files with small errors (up to one -single\-byte error per member), without the need of any extra redundance -at all. Losing an entire archive just because of a corrupt byte near the -beginning is a thing of the past. +With the help of lziprecover, losing an entire archive just because of a +corrupt byte near the beginning is a thing of the past. .PP Lziprecover can remove the damaged members from multimember files, for example multimember tar.lz archives. @@ -119,14 +117,14 @@ To extract all the files from archive 'foo.tar.lz', use the commands .PP Exit status: 0 for a normal exit, 1 for environmental problems (file not found, invalid flags, I/O errors, etc), 2 to indicate a corrupt or -invalid input file, 3 for an internal consistency error (eg, bug) which +invalid input file, 3 for an internal consistency error (e.g., bug) which caused lziprecover to panic. .SH "REPORTING BUGS" Report bugs to lzip\-bug@nongnu.org .br Lziprecover home page: http://www.nongnu.org/lzip/lziprecover.html .SH COPYRIGHT -Copyright \(co 2021 Antonio Diaz Diaz. +Copyright \(co 2022 Antonio Diaz Diaz. License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl.html> .br This is free software: you are free to change and redistribute it. diff --git a/doc/lziprecover.info b/doc/lziprecover.info index 49170df..112f65b 100644 --- a/doc/lziprecover.info +++ b/doc/lziprecover.info @@ -1,7 +1,7 @@ This is lziprecover.info, produced by makeinfo version 4.13+ from lziprecover.texi. -INFO-DIR-SECTION Data Compression +INFO-DIR-SECTION Compression START-INFO-DIR-ENTRY * Lziprecover: (lziprecover). Data recovery tool for the lzip format END-INFO-DIR-ENTRY @@ -12,7 +12,7 @@ File: lziprecover.info, Node: Top, Next: Introduction, Up: (dir) Lziprecover Manual ****************** -This manual is for Lziprecover (version 1.22, 2 January 2021). +This manual is for Lziprecover (version 1.23, 21 January 2022). * Menu: @@ -32,7 +32,7 @@ This manual is for Lziprecover (version 1.22, 2 January 2021). * Concept index:: Index of concepts - Copyright (C) 2009-2021 Antonio Diaz Diaz. + Copyright (C) 2009-2022 Antonio Diaz Diaz. This manual is free documentation: you have unlimited permission to copy, distribute, and modify it. @@ -45,10 +45,10 @@ File: lziprecover.info, Node: Introduction, Next: Invoking lziprecover, Prev: Lziprecover is a data recovery tool and decompressor for files in the lzip compressed data format (.lz). Lziprecover is able to repair slightly damaged -files, produce a correct file by merging the good parts of two or more -damaged copies, reproduce a missing (zeroed) sector using a reference file, -extract data from damaged files, decompress files, and test integrity of -files. +files (up to one single-byte error per member), produce a correct file by +merging the good parts of two or more damaged copies, reproduce a missing +(zeroed) sector using a reference file, extract data from damaged files, +decompress files, and test integrity of files. Lziprecover can remove the damaged members from multimember files, for example multimember tar.lz archives. @@ -94,7 +94,7 @@ provides recovery capabilities like those of lziprecover, which is able to find and combine the good parts of several damaged copies. Lziprecover is able to recover or decompress files produced by any of the -compressors in the lzip family; lzip, plzip, minilzip/lzlib, clzip, and +compressors in the lzip family: lzip, plzip, minilzip/lzlib, clzip, and pdlzip. If the cause of file corruption is a damaged medium, the combination @@ -105,7 +105,7 @@ ddrescue-example2::, for examples. If a file is too damaged for lziprecover to repair it, all the recoverable data in all members of the file can be extracted with the following command (the resulting file may contain errors and some garbage -data may be produced at the end of each member): +data may be produced at the end of each damaged member): lziprecover -cd -i file.lz > file @@ -161,7 +161,7 @@ lziprecover decompresses from standard input to standard output. dictionary size of the resulting file (and therefore the amount of memory required to decompress it). Only streamed files with default LZMA properties can be converted; non-streamed lzma-alone files lack - the end of stream marker required in lzip files. + the "End Of Stream" marker required in lzip files. The name of the converted lzip file is derived from that of the original lzma-alone file as follows: @@ -176,15 +176,18 @@ lziprecover decompresses from standard input to standard output. unchanged. This option (or '-o') is needed when reading from a named pipe (fifo) or from a device. Use it also to recover as much of the decompressed data as possible when decompressing a corrupt file. '-c' - overrides '-o', but '-c' has no effect when merging, removing members, + overrides '-o'. '-c' has no effect when merging, removing members, repairing, reproducing, splitting, testing or listing. '-d' '--decompress' - Decompress the files specified. If a file does not exist or can't be - opened, lziprecover continues decompressing the rest of the files. If - a file fails to decompress, or is a terminal, lziprecover exits - immediately without decompressing the rest of the files. + Decompress the files specified. If a file does not exist, can't be + opened, or the destination file already exists and '--force' has not + been specified, lziprecover continues decompressing the rest of the + files and exits with error status 1. If a file fails to decompress, or + is a terminal, lziprecover exits immediately with error status 2 + without decompressing the rest of the files. A terminal is considered + an uncompressed file, and therefore invalid. '-D RANGE' '--range-decompress=RANGE' @@ -243,12 +246,12 @@ lziprecover decompresses from standard input to standard output. '-cd -i' method resyncs to the next member header after each error, and is immune to some format errors that make '-D0 -i' fail. The range decompressed may be smaller than the range requested, because of the - errors. + errors. The exit status is set to 0 unless other errors are found (I/O + errors, for example). Make '--list', '--dump', '--remove', and '--strip' ignore format errors. The sizes of the members with errors (specially the last) may - be wrong. The exit status is set to 0 unless other errors are found - (I/O errors, for example). + be wrong. '-k' '--keep' @@ -267,10 +270,12 @@ lziprecover decompresses from standard input to standard output. between members are shown. The member numbers shown coincide with the file numbers produced by '--split'. - '-lq' can be used to verify quickly (without decompressing) the - structural integrity of the files specified. (Use '--test' to verify - the data integrity). '-alq' additionally verifies that none of the - files specified contain trailing data. + If any file is damaged, does not exist, can't be opened, or is not + regular, the final exit status will be > 0. '-lq' can be used to verify + quickly (without decompressing) the structural integrity of the files + specified. (Use '--test' to verify the data integrity). '-alq' + additionally verifies that none of the files specified contain + trailing data. '-m' '--merge' @@ -361,7 +366,7 @@ lziprecover decompresses from standard input to standard output. If a file does not exist, can't be opened, or is not regular, lziprecover continues processing the rest of the files. If the dump fails in one file, lziprecover exits immediately without processing the - rest of the files. + rest of the files. Only '--dump=tdata' can write to a terminal. The argument to '--dump' is a colon-separated list of the following element specifiers; a member list (1,3-6), a reverse member list @@ -451,29 +456,39 @@ lziprecover decompresses from standard input to standard output. byte values. Print cumulative data for all files followed by the name of the first file with the longest sequence. -'-U' -'--unzcrash' - Test 1-bit errors in the LZMA stream of the input FILE like the - command 'unzcrash -b1 -p7 -s-20 'lzip -t' FILE' but in memory, and - therefore much faster. *Note Unzcrash::. This option tests all the - members independently in a multimember file, skipping headers and - trailers. If a decompression succeeds, the decompressed output is - compared with the original decompressed output of FILE using MD5 - digests. The compressed FILE must not contain errors and must - decompress correctly for the comparisons to work. +'-U 1|BSIZE' +'--unzcrash=1|BSIZE' + With argument '1', test 1-bit errors in the LZMA stream of the + compressed input FILE like the command + 'unzcrash -b1 -p7 -s-20 'lzip -t' FILE' but in memory, and therefore + much faster. *Note Unzcrash::. This option tests all the members + independently in a multimember file, skipping headers and trailers. If + a decompression succeeds, the decompressed output is compared with the + decompressed output of the original FILE using MD5 digests. FILE must + not contain errors and must decompress correctly for the comparisons to + work. + + With argument 'B', test zeroed sectors (blocks of bytes) in the LZMA + stream of the compressed input FILE like the command + 'unzcrash --block=SIZE -d1 -p7 -s-(SIZE+20) 'lzip -t' FILE' but in + memory, and therefore much faster. Testing and comparisons work just + like with the argument '1' explained above. By default '--unzcrash' only prints the interesting cases; CRC mismatches, size mismatches, unsupported marker codes, unexpected EOFs, apparently successful decompressions, and decoder errors detected - 50_000 or more bytes beyond the byte being tested. At verbosity level - 1 (-v) it also prints decoder errors detected 10_000 or more bytes - beyond the byte being tested. At verbosity level 2 (-vv) it prints all - cases. + 50_000 or more bytes beyond the byte (or the start of the block) being + tested. At verbosity level 1 (-v) it also prints decoder errors + detected 10_000 or more bytes beyond the byte being tested. At + verbosity level 2 (-vv) it prints all cases for 1-bit errors or the + decoder errors detected beyond the end of the block for zeroed blocks. '-W POSITION,VALUE' '--debug-decompress=POSITION,VALUE' Load the compressed FILE into memory, set the byte at POSITION to VALUE, and decompress the modified compressed data to standard output. + If the damaged member is decompressed fully (just fails with a CRC + mismatch), the members following it are also decompressed. '-X[POSITION,VALUE]' '--show-packets[=POSITION,VALUE]' @@ -517,7 +532,7 @@ Y yottabyte (10^24) | Yi yobibyte (2^80) Exit status: 0 for a normal exit, 1 for environmental problems (file not found, invalid flags, I/O errors, etc), 2 to indicate a corrupt or invalid -input file, 3 for an internal consistency error (eg, bug) which caused +input file, 3 for an internal consistency error (e.g., bug) which caused lziprecover to panic. @@ -875,7 +890,7 @@ gmp-6.1.1.tar gmp-6.1.2.tar.lz 175 / 473 = 37% gmp-6.1.2.tar gmp-6.1.1.tar.lz 181 / 472 = 38.35% Note that the "performance of reproduce" is a probability, not a partial -recovery. The data is either fully recovered (with the probability X shown +recovery. The data is either recovered fully (with the probability X shown in the last column of the tables above) or not recovered at all (with probability 1 - X). @@ -1065,9 +1080,11 @@ when there is no longer anything to take away. represents a variable number of bytes. - A lzip file consists of a series of "members" (compressed data sets). -The members simply appear one after another in the file, with no additional -information before, between, or after them. + A lzip file consists of a series of independent "members" (compressed +data sets). The members simply appear one after another in the file, with no +additional information before, between, or after them. Each member can +encode in compressed form up to 16 EiB - 1 byte of uncompressed data. The +size of a multimember file is unlimited. Each member has the following structure: @@ -1095,21 +1112,22 @@ information before, between, or after them. Valid values for dictionary size range from 4 KiB to 512 MiB. 'LZMA stream' - The LZMA stream, finished by an end of stream marker. Uses default + The LZMA stream, finished by an "End Of Stream" marker. Uses default values for encoder properties. *Note Stream format: (lzip)Stream format, for a complete description. 'CRC32 (4 bytes)' - Cyclic Redundancy Check (CRC) of the uncompressed original data. + Cyclic Redundancy Check (CRC) of the original uncompressed data. 'Data size (8 bytes)' - Size of the uncompressed original data. + Size of the original uncompressed data. 'Member size (8 bytes)' Total size of the member, including header and trailer. This field acts as a distributed index, allows the verification of stream integrity, - and facilitates safe recovery of undamaged members from multimember - files. + and facilitates the safe recovery of undamaged members from + multimember files. Member size should be limited to 2 PiB to prevent + the data size field from overflowing. @@ -1167,7 +1185,7 @@ Example 1: Add a comment or description to a compressed file. # This command prints the comment to standard output lziprecover --dump=tdata file.lz # This command outputs file.lz without the comment - lziprecover --strip=tdata file.lz + lziprecover --strip=tdata file.lz > stripped_file.lz # This command removes the comment from file.lz lziprecover --remove=tdata file.lz @@ -1209,7 +1227,7 @@ Example 4: The right way of concatenating the decompressed output of two or more compressed files. *Note Trailing data::. Don't do this - cat file1.lz file2.lz file3.lz | lziprecover -d + cat file1.lz file2.lz file3.lz | lziprecover -d - Do this instead lziprecover -cd file1.lz file2.lz file3.lz You may also concatenate the compressed files like this @@ -1292,7 +1310,10 @@ latter case, please, report any false negative as a bug. In order to compare the outputs, unzcrash needs a 'zcmp' program able to understand the format being tested. For example the 'zcmp' provided by -zutils. Use '--zcmp=false' to disable comparisons. *Note Zcmp: (zutils)Zcmp. +zutils. If the 'zcmp' program used does not understand the format being +tested, all the comparisons will fail because the compressed files will be +compared without being decompressed first. Use '--zcmp=false' to disable +comparisons. *Note Zcmp: (zutils)Zcmp. The format for running unzcrash is: @@ -1393,7 +1414,7 @@ tested must decompress it correctly for the comparisons to work. Exit status: 0 for a normal exit, 1 for environmental problems (file not found, invalid flags, I/O errors, etc), 2 to indicate a corrupt or invalid -input file, 3 for an internal consistency error (eg, bug) which caused +input file, 3 for an internal consistency error (e.g., bug) which caused unzcrash to panic. @@ -1443,32 +1464,32 @@ Concept index Tag Table: -Node: Top231 -Node: Introduction1410 -Node: Invoking lziprecover5353 -Ref: --trailing-error6220 -Ref: range-format8391 -Ref: --reproduce8726 -Ref: --repair12904 -Node: Data safety24532 -Node: Merging with a backup26520 -Node: Reproducing a mailbox27784 -Node: Repairing one byte30285 -Node: Merging files32350 -Ref: performance-of-merge33520 -Ref: ddrescue-example35129 -Node: Reproducing one sector36416 -Ref: performance-of-reproduce40299 -Ref: ddrescue-example242974 -Node: Tarlz45394 -Node: File names49058 -Node: File format49515 -Node: Trailing data51964 -Node: Examples55186 -Ref: concat-example55762 -Node: Unzcrash57152 -Node: Problems63240 -Node: Concept index63792 +Node: Top226 +Node: Introduction1406 +Node: Invoking lziprecover5398 +Ref: --trailing-error6265 +Ref: range-format8644 +Ref: --reproduce8979 +Ref: --repair13278 +Node: Data safety25584 +Node: Merging with a backup27572 +Node: Reproducing a mailbox28836 +Node: Repairing one byte31337 +Node: Merging files33402 +Ref: performance-of-merge34572 +Ref: ddrescue-example36181 +Node: Reproducing one sector37468 +Ref: performance-of-reproduce41351 +Ref: ddrescue-example244026 +Node: Tarlz46446 +Node: File names50110 +Node: File format50567 +Node: Trailing data53258 +Node: Examples56499 +Ref: concat-example57075 +Node: Unzcrash58467 +Node: Problems64739 +Node: Concept index65291 End Tag Table diff --git a/doc/lziprecover.texi b/doc/lziprecover.texi index 6766403..7b3449e 100644 --- a/doc/lziprecover.texi +++ b/doc/lziprecover.texi @@ -6,10 +6,10 @@ @finalout @c %**end of header -@set UPDATED 2 January 2021 -@set VERSION 1.22 +@set UPDATED 21 January 2022 +@set VERSION 1.23 -@dircategory Data Compression +@dircategory Compression @direntry * Lziprecover: (lziprecover). Data recovery tool for the lzip format @end direntry @@ -53,7 +53,7 @@ This manual is for Lziprecover (version @value{VERSION}, @value{UPDATED}). @end menu @sp 1 -Copyright @copyright{} 2009-2021 Antonio Diaz Diaz. +Copyright @copyright{} 2009-2022 Antonio Diaz Diaz. This manual is free documentation: you have unlimited permission to copy, distribute, and modify it. @@ -67,10 +67,10 @@ distribute, and modify it. @uref{http://www.nongnu.org/lzip/lziprecover.html,,Lziprecover} is a data recovery tool and decompressor for files in the lzip compressed data format (.lz). Lziprecover is able to repair slightly damaged -files, produce a correct file by merging the good parts of two or more -damaged copies, reproduce a missing (zeroed) sector using a reference file, -extract data from damaged files, decompress files, and test integrity of -files. +files (up to one single-byte error per member), produce a correct file by +merging the good parts of two or more damaged copies, reproduce a missing +(zeroed) sector using a reference file, extract data from damaged files, +decompress files, and test integrity of files. Lziprecover can remove the damaged members from multimember files, for example multimember tar.lz archives. @@ -100,8 +100,8 @@ The lzip format is as simple as possible (but not simpler). The lzip manual provides the source code of a simple decompressor along with a detailed explanation of how it works, so that with the only help of the lzip manual it would be possible for a digital archaeologist to extract -the data from a lzip file long after quantum computers eventually render -LZMA obsolete. +the data from a lzip file long after quantum computers eventually +render LZMA obsolete. @item Additionally the lzip reference implementation is copylefted, which @@ -121,7 +121,7 @@ provides recovery capabilities like those of lziprecover, which is able to find and combine the good parts of several damaged copies. Lziprecover is able to recover or decompress files produced by any of the -compressors in the lzip family; lzip, plzip, minilzip/lzlib, clzip, and +compressors in the lzip family: lzip, plzip, minilzip/lzlib, clzip, and pdlzip. If the cause of file corruption is a damaged medium, the combination @@ -132,7 +132,7 @@ from damaged lzip files. @xref{ddrescue-example}, and If a file is too damaged for lziprecover to repair it, all the recoverable data in all members of the file can be extracted with the following command (the resulting file may contain errors and some garbage data may be produced -at the end of each member): +at the end of each damaged member): @example lziprecover -cd -i file.lz > file @@ -200,8 +200,8 @@ Convert lzma-alone files to lzip format without recompressing, just adding a lzip header and trailer. The conversion minimizes the dictionary size of the resulting file (and therefore the amount of memory required to decompress it). Only streamed files with default LZMA -properties can be converted; non-streamed lzma-alone files lack the end -of stream marker required in lzip files. +properties can be converted; non-streamed lzma-alone files lack the "End +Of Stream" marker required in lzip files. The name of the converted lzip file is derived from that of the original lzma-alone file as follows: @@ -217,16 +217,19 @@ lzma-alone file as follows: Write decompressed data to standard output; keep input files unchanged. This option (or @samp{-o}) is needed when reading from a named pipe (fifo) or from a device. Use it also to recover as much of the decompressed data as -possible when decompressing a corrupt file. @samp{-c} overrides @samp{-o}, -but @samp{-c} has no effect when merging, removing members, repairing, +possible when decompressing a corrupt file. @samp{-c} overrides @samp{-o}. +@samp{-c} has no effect when merging, removing members, repairing, reproducing, splitting, testing or listing. @item -d @itemx --decompress -Decompress the files specified. If a file does not exist or can't be -opened, lziprecover continues decompressing the rest of the files. If a file -fails to decompress, or is a terminal, lziprecover exits immediately without -decompressing the rest of the files. +Decompress the files specified. If a file does not exist, can't be opened, +or the destination file already exists and @samp{--force} has not been +specified, lziprecover continues decompressing the rest of the files and +exits with error status 1. If a file fails to decompress, or is a terminal, +lziprecover exits immediately with error status 2 without decompressing the +rest of the files. A terminal is considered an uncompressed file, and +therefore invalid. @item -D @var{range} @itemx --range-decompress=@var{range} @@ -287,12 +290,12 @@ data in all members of @samp{file.lz} without having to split it first. The @w{@samp{-cd -i}} method resyncs to the next member header after each error, and is immune to some format errors that make @w{@samp{-D0 -i}} fail. The range decompressed may be smaller than the range requested, because of the -errors. +errors. The exit status is set to 0 unless other errors are found (I/O +errors, for example). Make @samp{--list}, @samp{--dump}, @samp{--remove}, and @samp{--strip} ignore format errors. The sizes of the members with errors (specially the -last) may be wrong. The exit status is set to 0 unless other errors are -found (I/O errors, for example). +last) may be wrong. @item -k @itemx --keep @@ -308,13 +311,13 @@ size, the number of members in the file, and the amount of trailing data (if any) are also printed. With @samp{-vv}, the positions and sizes of each member in multimember files are also printed. With @samp{-i}, format errors are ignored, and with @samp{-ivv}, gaps between members are shown. The -member numbers shown coincide with the file numbers produced by -@samp{--split}. +member numbers shown coincide with the file numbers produced by @samp{--split}. -@samp{-lq} can be used to verify quickly (without decompressing) the -structural integrity of the files specified. (Use @samp{--test} to verify -the data integrity). @samp{-alq} additionally verifies that none of the -files specified contain trailing data. +If any file is damaged, does not exist, can't be opened, or is not regular, +the final exit status will be @w{> 0}. @samp{-lq} can be used to verify +quickly (without decompressing) the structural integrity of the files +specified. (Use @samp{--test} to verify the data integrity). @samp{-alq} +additionally verifies that none of the files specified contain trailing data. @item -m @itemx --merge @@ -404,7 +407,7 @@ one file is given, the elements dumped from all files are concatenated. If a file does not exist, can't be opened, or is not regular, lziprecover continues processing the rest of the files. If the dump fails in one file, lziprecover exits immediately without processing the -rest of the files. +rest of the files. Only @samp{--dump=tdata} can write to a terminal. The argument to @samp{--dump} is a colon-separated list of the following element specifiers; a member list (1,3-6), a reverse member list @@ -495,29 +498,39 @@ specified, print the frequency of repeated sequences of all possible byte values. Print cumulative data for all files followed by the name of the first file with the longest sequence. -@item -U -@itemx --unzcrash -Test 1-bit errors in the LZMA stream of the input @var{file} like the -command @w{@samp{unzcrash -b1 -p7 -s-20 'lzip -t' @var{file}}} but in -memory, and therefore much faster. @xref{Unzcrash}. This option tests all -the members independently in a multimember file, skipping headers and -trailers. If a decompression succeeds, the decompressed output is compared -with the original decompressed output of @var{file} using MD5 digests. The -compressed @var{file} must not contain errors and must decompress correctly -for the comparisons to work. +@item -U 1|B@var{size} +@itemx --unzcrash=1|B@var{size} +With argument @samp{1}, test 1-bit errors in the LZMA stream of the +compressed input @var{file} like the command +@w{@samp{unzcrash -b1 -p7 -s-20 'lzip -t' @var{file}}} but in memory, and +therefore much faster. @xref{Unzcrash}. This option tests all the members +independently in a multimember file, skipping headers and trailers. If a +decompression succeeds, the decompressed output is compared with the +decompressed output of the original @var{file} using MD5 digests. @var{file} +must not contain errors and must decompress correctly for the comparisons to +work. + +With argument @samp{B}, test zeroed sectors (blocks of bytes) in the LZMA +stream of the compressed input @var{file} like the command +@w{@samp{unzcrash --block=@var{size} -d1 -p7 -s-(@var{size}+20) 'lzip -t' @var{file}}} +but in memory, and therefore much faster. Testing and comparisons work just +like with the argument @samp{1} explained above. By default @samp{--unzcrash} only prints the interesting cases; CRC mismatches, size mismatches, unsupported marker codes, unexpected EOFs, apparently successful decompressions, and decoder errors detected 50_000 or -more bytes beyond the byte being tested. At verbosity level 1 (-v) it also -prints decoder errors detected 10_000 or more bytes beyond the byte being -tested. At verbosity level 2 (-vv) it prints all cases. +more bytes beyond the byte (or the start of the block) being tested. At +verbosity level 1 (-v) it also prints decoder errors detected 10_000 or more +bytes beyond the byte being tested. At verbosity level 2 (-vv) it prints all +cases for 1-bit errors or the decoder errors detected beyond the end of the +block for zeroed blocks. @item -W @var{position},@var{value} @itemx --debug-decompress=@var{position},@var{value} Load the compressed @var{file} into memory, set the byte at @var{position} to @var{value}, and decompress the modified compressed data to standard -output. +output. If the damaged member is decompressed fully (just fails with a CRC +mismatch), the members following it are also decompressed. @item -X[@var{position},@var{value}] @itemx --show-packets[=@var{position},@var{value}] @@ -563,9 +576,9 @@ Table of SI and binary prefixes (unit multipliers): @sp 1 Exit status: 0 for a normal exit, 1 for environmental problems (file not -found, invalid flags, I/O errors, etc), 2 to indicate a corrupt or -invalid input file, 3 for an internal consistency error (eg, bug) which -caused lziprecover to panic. +found, invalid flags, I/O errors, etc), 2 to indicate a corrupt or invalid +input file, 3 for an internal consistency error (e.g., bug) which caused +lziprecover to panic. @node Data safety @@ -944,7 +957,7 @@ real backups of my own working directory: @end multitable Note that the "performance of reproduce" is a probability, not a partial -recovery. The data is either fully recovered (with the probability X shown +recovery. The data is either recovered fully (with the probability X shown in the last column of the tables above) or not recovered at all (with probability @w{1 - X}). @@ -1158,9 +1171,11 @@ represents one byte; a box like this: represents a variable number of bytes. @sp 1 -A lzip file consists of a series of "members" (compressed data sets). -The members simply appear one after another in the file, with no -additional information before, between, or after them. +A lzip file consists of a series of independent "members" (compressed data +sets). The members simply appear one after another in the file, with no +additional information before, between, or after them. Each member can +encode in compressed form up to @w{16 EiB - 1 byte} of uncompressed data. +The size of a multimember file is unlimited. Each member has the following structure: @@ -1190,7 +1205,7 @@ Example: 0xD3 = 2^19 - 6 * 2^15 = 512 KiB - 6 * 32 KiB = 320 KiB@* Valid values for dictionary size range from 4 KiB to 512 MiB. @item LZMA stream -The LZMA stream, finished by an end of stream marker. Uses default values +The LZMA stream, finished by an "End Of Stream" marker. Uses default values for encoder properties. @ifnothtml @xref{Stream format,,,lzip}, @@ -1202,15 +1217,17 @@ See for a complete description. @item CRC32 (4 bytes) -Cyclic Redundancy Check (CRC) of the uncompressed original data. +Cyclic Redundancy Check (CRC) of the original uncompressed data. @item Data size (8 bytes) -Size of the uncompressed original data. +Size of the original uncompressed data. @item Member size (8 bytes) Total size of the member, including header and trailer. This field acts as a distributed index, allows the verification of stream integrity, and -facilitates safe recovery of undamaged members from multimember files. +facilitates the safe recovery of undamaged members from multimember files. +Member size should be limited to @w{2 PiB} to prevent the data size field +from overflowing. @end table @@ -1277,7 +1294,7 @@ echo 'This file contains this and that' >> file.lz # This command prints the comment to standard output lziprecover --dump=tdata file.lz # This command outputs file.lz without the comment -lziprecover --strip=tdata file.lz +lziprecover --strip=tdata file.lz > stripped_file.lz # This command removes the comment from file.lz lziprecover --remove=tdata file.lz @end example @@ -1333,7 +1350,7 @@ more compressed files. @xref{Trailing data}. @example Don't do this - cat file1.lz file2.lz file3.lz | lziprecover -d + cat file1.lz file2.lz file3.lz | lziprecover -d - Do this instead lziprecover -cd file1.lz file2.lz file3.lz You may also concatenate the compressed files like this @@ -1429,7 +1446,10 @@ case, please, report any false negative as a bug. In order to compare the outputs, unzcrash needs a @samp{zcmp} program able to understand the format being tested. For example the @samp{zcmp} provided by @uref{http://www.nongnu.org/zutils/manual/zutils_manual.html#Zcmp,,zutils}. -Use @samp{--zcmp=false} to disable comparisons. +If the @samp{zcmp} program used does not understand the format being tested, +all the comparisons will fail because the compressed files will be compared +without being decompressed first. Use @samp{--zcmp=false} to disable +comparisons. @ifnothtml @xref{Zcmp,,,zutils}. @end ifnothtml @@ -1540,7 +1560,7 @@ unzcrash and zcmp to use the same decompressor with a command like Exit status: 0 for a normal exit, 1 for environmental problems (file not found, invalid flags, I/O errors, etc), 2 to indicate a corrupt or -invalid input file, 3 for an internal consistency error (eg, bug) which +invalid input file, 3 for an internal consistency error (e.g., bug) which caused unzcrash to panic. |