Merging upstream version 1.24.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
cefe4620fe
commit
bbed90a132
35 changed files with 910 additions and 848 deletions
|
@ -1,5 +1,5 @@
|
|||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.2.
|
||||
.TH LZIPRECOVER "1" "June 2023" "lziprecover 1.24-pre1" "User Commands"
|
||||
.TH LZIPRECOVER "1" "January 2024" "lziprecover 1.24" "User Commands"
|
||||
.SH NAME
|
||||
lziprecover \- recovers data from damaged lzip files
|
||||
.SH SYNOPSIS
|
||||
|
@ -75,7 +75,7 @@ keep (don't delete) input files
|
|||
print (un)compressed file sizes
|
||||
.TP
|
||||
\fB\-m\fR, \fB\-\-merge\fR
|
||||
correct errors in file using several copies
|
||||
repair errors in file using several copies
|
||||
.TP
|
||||
\fB\-o\fR, \fB\-\-output=\fR<file>
|
||||
place the output into <file>
|
||||
|
@ -125,7 +125,7 @@ To extract all the files from archive 'foo.tar.lz', use the commands
|
|||
\&'tar \fB\-xf\fR foo.tar.lz' or 'lziprecover \fB\-cd\fR foo.tar.lz | tar \fB\-xf\fR \-'.
|
||||
.PP
|
||||
Exit status: 0 for a normal exit, 1 for environmental problems
|
||||
(file not found, invalid command line options, I/O errors, etc), 2 to
|
||||
(file not found, invalid command\-line options, 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.
|
||||
.SH "REPORTING BUGS"
|
||||
|
@ -133,7 +133,7 @@ Report bugs to lzip\-bug@nongnu.org
|
|||
.br
|
||||
Lziprecover home page: http://www.nongnu.org/lzip/lziprecover.html
|
||||
.SH COPYRIGHT
|
||||
Copyright \(co 2023 Antonio Diaz Diaz.
|
||||
Copyright \(co 2024 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.
|
||||
|
|
|
@ -12,12 +12,12 @@ File: lziprecover.info, Node: Top, Next: Introduction, Up: (dir)
|
|||
Lziprecover Manual
|
||||
******************
|
||||
|
||||
This manual is for Lziprecover (version 1.24-pre1, 14 June 2023).
|
||||
This manual is for Lziprecover (version 1.24, 20 January 2024).
|
||||
|
||||
* Menu:
|
||||
|
||||
* Introduction:: Purpose and features of lziprecover
|
||||
* Invoking lziprecover:: Command line interface
|
||||
* Invoking lziprecover:: Command-line interface
|
||||
* Data safety:: Protecting data from accidental loss
|
||||
* Repairing one byte:: Fixing bit flips and similar errors
|
||||
* Merging files:: Fixing several damaged copies
|
||||
|
@ -32,7 +32,7 @@ This manual is for Lziprecover (version 1.24-pre1, 14 June 2023).
|
|||
* Concept index:: Index of concepts
|
||||
|
||||
|
||||
Copyright (C) 2009-2023 Antonio Diaz Diaz.
|
||||
Copyright (C) 2009-2024 Antonio Diaz Diaz.
|
||||
|
||||
This manual is free documentation: you have unlimited permission to copy,
|
||||
distribute, and modify it.
|
||||
|
@ -211,12 +211,12 @@ to prepend './' to any file name beginning with a hyphen, or use '--'.
|
|||
'--reproduce'
|
||||
Try to recover a missing (zeroed) sector in FILE using a reference
|
||||
file and the same version of lzip that created FILE. If successful, a
|
||||
repaired copy is written to the file 'FILE_fixed.lz'. FILE is not
|
||||
repaired copy is written to the file FILE_fixed.lz. FILE is not
|
||||
modified at all. The exit status is 0 if the member containing the
|
||||
zeroed sector could be repaired, 2 otherwise. Note that
|
||||
'FILE_fixed.lz' may still contain errors in the members following the
|
||||
one repaired. *Note Reproducing one sector::, for a complete
|
||||
description of the reproduce mode.
|
||||
zeroed sector could be repaired, 2 otherwise. Note that FILE_fixed.lz
|
||||
may still contain errors in the members following the one repaired.
|
||||
*Note Reproducing one sector::, for a complete description of the
|
||||
reproduce mode.
|
||||
|
||||
'--lzip-level=DIGIT|a|m[LENGTH]'
|
||||
Try only the given compression level or match length limit when
|
||||
|
@ -273,7 +273,7 @@ to prepend './' to any file name beginning with a hyphen, or use '--'.
|
|||
file numbers produced by '--split'.
|
||||
|
||||
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 check
|
||||
regular, the final exit status is > 0. '-lq' can be used to check
|
||||
quickly (without decompressing) the structural integrity of the files
|
||||
specified. (Use '--test' to check the data integrity). '-alq'
|
||||
additionally checks that none of the files specified contain trailing
|
||||
|
@ -283,21 +283,21 @@ to prepend './' to any file name beginning with a hyphen, or use '--'.
|
|||
'--merge'
|
||||
Try to produce a correct file by merging the good parts of two or more
|
||||
damaged copies. If successful, a repaired copy is written to the file
|
||||
'FILE_fixed.lz'. The exit status is 0 if a correct file could be
|
||||
FILE_fixed.lz. The exit status is 0 if a correct file could be
|
||||
produced, 2 otherwise. *Note Merging files::, for a complete
|
||||
description of the merge mode.
|
||||
|
||||
'-o FILE'
|
||||
'--output=FILE'
|
||||
Place the output into FILE instead of into 'FILE_fixed.lz'. If
|
||||
Place the repaired output into FILE instead of into FILE_fixed.lz. If
|
||||
splitting, the names of the files produced are in the form
|
||||
'rec01FILE', 'rec02FILE', etc.
|
||||
|
||||
If decompressing, or converting lzma-alone files, and '-c' has not been
|
||||
also specified, write the decompressed or converted output to FILE;
|
||||
keep input files unchanged. This option (or '-c') is needed when
|
||||
reading from a named pipe (fifo) or from a device. '-o -' is
|
||||
equivalent to '-c'. '-o' has no effect when testing or listing.
|
||||
If '-c' has not been also specified, write the (de)compressed output
|
||||
to FILE, automatically creating any missing parent directories; keep
|
||||
input files unchanged. This option (or '-c') is needed when reading
|
||||
from a named pipe (fifo) or from a device. '-o -' is equivalent to
|
||||
'-c'. '-o' has no effect when testing or listing.
|
||||
|
||||
'-q'
|
||||
'--quiet'
|
||||
|
@ -307,7 +307,7 @@ to prepend './' to any file name beginning with a hyphen, or use '--'.
|
|||
'--byte-repair'
|
||||
Try to repair a FILE with small errors (up to one single-byte error
|
||||
per member). If successful, a repaired copy is written to the file
|
||||
'FILE_fixed.lz'. FILE is not modified at all. The exit status is 0 if
|
||||
FILE_fixed.lz. FILE is not modified at all. The exit status is 0 if
|
||||
the file could be repaired, 2 otherwise. *Note Repairing one byte::,
|
||||
for a complete description of the repair mode.
|
||||
|
||||
|
@ -491,12 +491,12 @@ to prepend './' to any file name beginning with a hyphen, or use '--'.
|
|||
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.
|
||||
much faster (30 to 50 times 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
|
||||
|
@ -517,8 +517,8 @@ to prepend './' to any file name beginning with a hyphen, or use '--'.
|
|||
'--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.
|
||||
If the damaged member can be decompressed to the end (just fails with
|
||||
a CRC mismatch), the members following it are also decompressed.
|
||||
|
||||
'-X[POSITION,VALUE]'
|
||||
'--show-packets[=POSITION,VALUE]'
|
||||
|
@ -564,7 +564,7 @@ Q quettabyte (10^30) | Qi quebibyte (2^100)
|
|||
|
||||
|
||||
Exit status: 0 for a normal exit, 1 for environmental problems (file not
|
||||
found, invalid command line options, I/O errors, etc), 2 to indicate a
|
||||
found, invalid command-line options, 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.
|
||||
|
||||
|
@ -574,7 +574,7 @@ File: lziprecover.info, Node: Data safety, Next: Repairing one byte, Prev: In
|
|||
3 Protecting data from accidental loss
|
||||
**************************************
|
||||
|
||||
It is a fact of life that sometimes data will become corrupt. Software has
|
||||
It is a fact of life that sometimes data becomes corrupt. Software has
|
||||
errors. Hardware may misbehave or fail. RAM may be struck by a cosmic ray.
|
||||
This is why a safe enough integrity checking is needed in compressed
|
||||
formats, and the reason why a data recovery tool is sometimes needed.
|
||||
|
@ -690,9 +690,9 @@ File: lziprecover.info, Node: Repairing one byte, Next: Merging files, Prev:
|
|||
|
||||
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. If the reparation is successful, the repaired file will be identical
|
||||
bit for bit to the original. This makes lzip files resistant to bit flip,
|
||||
one of the most common forms of data corruption.
|
||||
all. If the reparation is successful, the repaired file is identical bit for
|
||||
bit to the original. This makes lzip files resistant to bit flip, one of the
|
||||
most common forms of data corruption.
|
||||
|
||||
The file is repaired in memory. Therefore, enough virtual memory
|
||||
(RAM + swap) to contain the largest damaged member is required.
|
||||
|
@ -730,23 +730,23 @@ File: lziprecover.info, Node: Merging files, Next: Reproducing one sector, Pr
|
|||
***************
|
||||
|
||||
If you have several copies of a file but all of them are too damaged to
|
||||
repair them (*note Repairing one byte::), lziprecover can try to produce a
|
||||
correct file by merging the good parts of the damaged copies.
|
||||
repair them individually (*note Repairing one byte::), lziprecover can try
|
||||
to produce a correct file by merging the good parts of the damaged copies.
|
||||
|
||||
The merge may succeed even if some copies of the file have all the
|
||||
headers and trailers damaged, as long as there is at least one copy of
|
||||
every header and trailer intact, even if they are in different copies of
|
||||
the file.
|
||||
|
||||
The merge will fail if the damaged areas overlap (at least one byte is
|
||||
The merge fails if the damaged areas overlap (at least one byte is
|
||||
damaged in all copies), or are adjacent and the boundary can't be
|
||||
determined, or if the copies have too many damaged areas.
|
||||
|
||||
All the copies to be merged must have the same size. If any of them is
|
||||
larger or smaller than it should, either because it has been truncated or
|
||||
because it got some garbage data appended at the end, it can be brought to
|
||||
the correct size with the following command before merging it with the
|
||||
other copies:
|
||||
the correct size with the following command before merging it with the other
|
||||
copies:
|
||||
|
||||
ddrescue -s<correct_size> -x<correct_size> file.lz correct_size_file.lz
|
||||
|
||||
|
@ -1009,8 +1009,8 @@ the tar archiver and the lzip compressor.
|
|||
Tarlz creates tar archives using a simplified and safer variant of the
|
||||
POSIX pax format compressed in lzip format, keeping the alignment between
|
||||
tar members and lzip members. The resulting multimember tar.lz archive is
|
||||
fully backward compatible with standard tar tools like GNU tar, which treat
|
||||
it like any other tar.lz archive. *Note tarlz manual: (tarlz)Top, and *note
|
||||
backward compatible with standard tar tools like GNU tar, which treat it
|
||||
like any other tar.lz archive. *Note tarlz manual: (tarlz)Top, and *note
|
||||
lzip manual: (lzip)Top.
|
||||
|
||||
Multimember tar.lz archives have some safety advantages over solidly
|
||||
|
@ -1113,7 +1113,7 @@ when there is no longer anything to take away.
|
|||
represents a variable number of bytes.
|
||||
|
||||
|
||||
A lzip file consists of a series of independent "members" (compressed
|
||||
A lzip file consists of one or more 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
|
||||
|
@ -1180,7 +1180,7 @@ member. Such trailing data may be:
|
|||
the file has not been truncated), a cryptographically secure hash, a
|
||||
description of file contents, etc. It is safe to append any amount of
|
||||
text to a lzip file as long as none of the first four bytes of the
|
||||
text match the corresponding byte in the string "LZIP", and the text
|
||||
text matches the corresponding byte in the string "LZIP", and the text
|
||||
does not contain any zero bytes (null characters). Nonzero bytes and
|
||||
zero bytes can't be safely mixed in trailing data.
|
||||
|
||||
|
@ -1198,7 +1198,7 @@ member. Such trailing data may be:
|
|||
discriminate trailing data from a corrupt header has a Hamming
|
||||
distance (HD) of 3, and the 3 bit flips must happen in different magic
|
||||
bytes for the test to fail. In any case, the option '--trailing-error'
|
||||
guarantees that any corrupt header will be detected.
|
||||
guarantees that any corrupt header is detected.
|
||||
|
||||
Trailing data are in no way part of the lzip file format, but tools
|
||||
reading lzip files are expected to behave as correctly and usefully as
|
||||
|
@ -1305,7 +1305,9 @@ File: lziprecover.info, Node: Unzcrash, Next: Problems, Prev: Examples, Up:
|
|||
12 Testing the robustness of decompressors
|
||||
******************************************
|
||||
|
||||
The lziprecover package also includes unzcrash, a program written to test
|
||||
*Note --unzcrash::, for a faster way of testing the robustness of lzip.
|
||||
|
||||
The lziprecover package also includes unzcrash, a program written to test
|
||||
robustness to decompression of corrupted data, inspired by unzcrash.c from
|
||||
Julian Seward's bzip2. Type 'make unzcrash' in the lziprecover source
|
||||
directory to build it.
|
||||
|
@ -1332,7 +1334,7 @@ the first non-option argument, and then writes the file specified in the
|
|||
second non-option argument to the standard input of the subprocess,
|
||||
modifying the corresponding byte each time. Therefore unzcrash can be used
|
||||
to test any decompressor (not only lzip), or even other decoder programs
|
||||
having a suitable command line syntax.
|
||||
having a suitable command-line syntax.
|
||||
|
||||
If the decompressor returns with zero status, unzcrash compares the
|
||||
output of the decompressor for the original and corrupt files. If the
|
||||
|
@ -1345,9 +1347,9 @@ 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. 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.
|
||||
tested, all the comparisons fail because the compressed files are compared
|
||||
without being decompressed first. Use '--zcmp=false' to disable comparisons.
|
||||
*Note Zcmp: (zutils)Zcmp.
|
||||
|
||||
The format for running unzcrash is:
|
||||
|
||||
|
@ -1395,8 +1397,8 @@ tested must decompress it correctly for the comparisons to work.
|
|||
Test one byte, block, or truncation size every N bytes. If '--delta'
|
||||
is not specified, unzcrash tests all the bytes, non-overlapping
|
||||
blocks, or truncation sizes. Values of N smaller than the block size
|
||||
will result in overlapping blocks. (Which is convenient for testing
|
||||
because there are usually too few non-overlapping blocks in a file).
|
||||
result in overlapping blocks. (Which is convenient for testing because
|
||||
there are usually too few non-overlapping blocks in a file).
|
||||
|
||||
'-e POSITION,VALUE'
|
||||
'--set-byte=POSITION,VALUE'
|
||||
|
@ -1447,7 +1449,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 command line options, I/O errors, etc), 2 to indicate a
|
||||
found, invalid command-line options, I/O errors, etc), 2 to indicate a
|
||||
corrupt or invalid input file, 3 for an internal consistency error (e.g.,
|
||||
bug) which caused unzcrash to panic.
|
||||
|
||||
|
@ -1499,31 +1501,32 @@ Concept index
|
|||
|
||||
Tag Table:
|
||||
Node: Top226
|
||||
Node: Introduction1408
|
||||
Node: Invoking lziprecover5414
|
||||
Ref: --trailing-error6361
|
||||
Ref: range-format8793
|
||||
Ref: --reproduce9128
|
||||
Ref: --byte-repair13424
|
||||
Node: Data safety27441
|
||||
Node: Merging with a backup29429
|
||||
Node: Reproducing a mailbox30692
|
||||
Node: Repairing one byte33146
|
||||
Node: Merging files35211
|
||||
Ref: performance-of-merge36381
|
||||
Ref: ddrescue-example37990
|
||||
Node: Reproducing one sector39277
|
||||
Ref: performance-of-reproduce43163
|
||||
Ref: ddrescue-example245837
|
||||
Node: Tarlz48257
|
||||
Node: File names51921
|
||||
Node: File format52383
|
||||
Node: Trailing data55070
|
||||
Node: Examples58388
|
||||
Ref: concat-example58963
|
||||
Node: Unzcrash60355
|
||||
Node: Problems66633
|
||||
Node: Concept index67185
|
||||
Node: Introduction1406
|
||||
Node: Invoking lziprecover5412
|
||||
Ref: --trailing-error6359
|
||||
Ref: range-format8791
|
||||
Ref: --reproduce9126
|
||||
Ref: --byte-repair13411
|
||||
Ref: --unzcrash23209
|
||||
Node: Data safety27459
|
||||
Node: Merging with a backup29443
|
||||
Node: Reproducing a mailbox30706
|
||||
Node: Repairing one byte33160
|
||||
Node: Merging files35220
|
||||
Ref: performance-of-merge36399
|
||||
Ref: ddrescue-example38008
|
||||
Node: Reproducing one sector39295
|
||||
Ref: performance-of-reproduce43181
|
||||
Ref: ddrescue-example245855
|
||||
Node: Tarlz48275
|
||||
Node: File names51933
|
||||
Node: File format52395
|
||||
Node: Trailing data55082
|
||||
Node: Examples58397
|
||||
Ref: concat-example58972
|
||||
Node: Unzcrash60364
|
||||
Node: Problems66704
|
||||
Node: Concept index67256
|
||||
|
||||
End Tag Table
|
||||
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
@finalout
|
||||
@c %**end of header
|
||||
|
||||
@set UPDATED 14 June 2023
|
||||
@set VERSION 1.24-pre1
|
||||
@set UPDATED 20 January 2024
|
||||
@set VERSION 1.24
|
||||
|
||||
@dircategory Compression
|
||||
@direntry
|
||||
|
@ -37,7 +37,7 @@ This manual is for Lziprecover (version @value{VERSION}, @value{UPDATED}).
|
|||
|
||||
@menu
|
||||
* Introduction:: Purpose and features of lziprecover
|
||||
* Invoking lziprecover:: Command line interface
|
||||
* Invoking lziprecover:: Command-line interface
|
||||
* Data safety:: Protecting data from accidental loss
|
||||
* Repairing one byte:: Fixing bit flips and similar errors
|
||||
* Merging files:: Fixing several damaged copies
|
||||
|
@ -53,7 +53,7 @@ This manual is for Lziprecover (version @value{VERSION}, @value{UPDATED}).
|
|||
@end menu
|
||||
|
||||
@sp 1
|
||||
Copyright @copyright{} 2009-2023 Antonio Diaz Diaz.
|
||||
Copyright @copyright{} 2009-2024 Antonio Diaz Diaz.
|
||||
|
||||
This manual is free documentation: you have unlimited permission to copy,
|
||||
distribute, and modify it.
|
||||
|
@ -254,12 +254,12 @@ unless the option @option{--output} is used.
|
|||
@itemx --reproduce
|
||||
Try to recover a missing (zeroed) sector in @var{file} using a reference
|
||||
file and the same version of lzip that created @var{file}. If successful, a
|
||||
repaired copy is written to the file @samp{@var{file}_fixed.lz}. @var{file}
|
||||
is not modified at all. The exit status is 0 if the member containing the
|
||||
zeroed sector could be repaired, 2 otherwise. Note that
|
||||
@samp{@var{file}_fixed.lz} may still contain errors in the members following
|
||||
the one repaired. @xref{Reproducing one sector}, for a complete description
|
||||
of the reproduce mode.
|
||||
repaired copy is written to the file @var{file}_fixed.lz. @var{file} is not
|
||||
modified at all. The exit status is 0 if the member containing the zeroed
|
||||
sector could be repaired, 2 otherwise. Note that @var{file}_fixed.lz may
|
||||
still contain errors in the members following the one repaired.
|
||||
@xref{Reproducing one sector}, for a complete description of the reproduce
|
||||
mode.
|
||||
|
||||
@item --lzip-level=@var{digit}|a|m[@var{length}]
|
||||
Try only the given compression level or match length limit when reproducing
|
||||
|
@ -315,30 +315,30 @@ are ignored, and with @option{-ivv}, gaps between members are shown. The
|
|||
member numbers shown coincide with the file numbers produced by @option{--split}.
|
||||
|
||||
If any file is damaged, does not exist, can't be opened, or is not regular,
|
||||
the final exit status will be @w{> 0}. @option{-lq} can be used to check
|
||||
quickly (without decompressing) the structural integrity of the files
|
||||
specified. (Use @option{--test} to check the data integrity). @option{-alq}
|
||||
the final exit status is @w{> 0}. @option{-lq} can be used to check quickly
|
||||
(without decompressing) the structural integrity of the files specified.
|
||||
(Use @option{--test} to check the data integrity). @option{-alq}
|
||||
additionally checks that none of the files specified contain trailing data.
|
||||
|
||||
@item -m
|
||||
@itemx --merge
|
||||
Try to produce a correct file by merging the good parts of two or more
|
||||
damaged copies. If successful, a repaired copy is written to the file
|
||||
@samp{@var{file}_fixed.lz}. The exit status is 0 if a correct file could
|
||||
be produced, 2 otherwise. @xref{Merging files}, for a complete
|
||||
description of the merge mode.
|
||||
@var{file}_fixed.lz. The exit status is 0 if a correct file could be
|
||||
produced, 2 otherwise. @xref{Merging files}, for a complete description of
|
||||
the merge mode.
|
||||
|
||||
@item -o @var{file}
|
||||
@itemx --output=@var{file}
|
||||
Place the output into @var{file} instead of into @samp{@var{file}_fixed.lz}.
|
||||
If splitting, the names of the files produced are in the form
|
||||
@samp{rec01@var{file}}, @samp{rec02@var{file}}, etc.
|
||||
Place the repaired output into @var{file} instead of into
|
||||
@var{file}_fixed.lz. If splitting, the names of the files produced are in
|
||||
the form @samp{rec01@var{file}}, @samp{rec02@var{file}}, etc.
|
||||
|
||||
If decompressing, or converting lzma-alone files, and @option{-c} has not been
|
||||
also specified, write the decompressed or converted output to @var{file};
|
||||
keep input files unchanged. This option (or @option{-c}) is needed when
|
||||
reading from a named pipe (fifo) or from a device. @w{@samp{-o -}} is
|
||||
equivalent to @option{-c}. @option{-o} has no effect when testing or listing.
|
||||
If @option{-c} has not been also specified, write the (de)compressed output
|
||||
to @var{file}, automatically creating any missing parent directories; keep
|
||||
input files unchanged. This option (or @option{-c}) is needed when reading
|
||||
from a named pipe (fifo) or from a device. @w{@option{-o -}} is equivalent
|
||||
to @option{-c}. @option{-o} has no effect when testing or listing.
|
||||
|
||||
@item -q
|
||||
@itemx --quiet
|
||||
|
@ -349,9 +349,9 @@ Quiet operation. Suppress all messages.
|
|||
@itemx --byte-repair
|
||||
Try to repair a @var{file} with small errors (up to one single-byte error
|
||||
per member). If successful, a repaired copy is written to the file
|
||||
@samp{@var{file}_fixed.lz}. @var{file} is not modified at all. The exit
|
||||
status is 0 if the file could be repaired, 2 otherwise. @xref{Repairing one
|
||||
byte}, for a complete description of the repair mode.
|
||||
@var{file}_fixed.lz. @var{file} is not modified at all. The exit status is 0
|
||||
if the file could be repaired, 2 otherwise. @xref{Repairing one byte}, for a
|
||||
complete description of the repair mode.
|
||||
|
||||
@item -s
|
||||
@itemx --split
|
||||
|
@ -522,17 +522,18 @@ specified, print the frequency of repeated sequences of all possible byte
|
|||
values. Print cumulative data for all the files, followed by the name of the
|
||||
first file with the longest sequence.
|
||||
|
||||
@anchor{--unzcrash}
|
||||
@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.
|
||||
therefore much faster (30 to 50 times 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
|
||||
|
@ -553,8 +554,8 @@ block for zeroed blocks.
|
|||
@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. If the damaged member is decompressed fully (just fails with a CRC
|
||||
mismatch), the members following it are also decompressed.
|
||||
output. If the damaged member can be decompressed to the end (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}]
|
||||
|
@ -603,7 +604,7 @@ 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 command line options, I/O errors, etc), 2 to
|
||||
(file not found, invalid command-line options, 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.
|
||||
|
||||
|
@ -612,7 +613,7 @@ error (e.g., bug) which caused lziprecover to panic.
|
|||
@chapter Protecting data from accidental loss
|
||||
@cindex data safety
|
||||
|
||||
It is a fact of life that sometimes data will become corrupt. Software has
|
||||
It is a fact of life that sometimes data becomes corrupt. Software has
|
||||
errors. Hardware may misbehave or fail. RAM may be struck by a cosmic ray.
|
||||
This is why a safe enough integrity checking is needed in compressed
|
||||
formats, and the reason why a data recovery tool is sometimes needed.
|
||||
|
@ -725,10 +726,10 @@ identical backups (@pxref{performance-of-merge}).
|
|||
@cindex repairing one byte
|
||||
|
||||
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. If the reparation is successful, the repaired file will be
|
||||
identical bit for bit to the original. This makes lzip files resistant
|
||||
to bit flip, one of the most common forms of data corruption.
|
||||
single-byte error per member), without the need of any extra redundance at
|
||||
all. If the reparation is successful, the repaired file is identical bit for
|
||||
bit to the original. This makes lzip files resistant to bit flip, one of the
|
||||
most common forms of data corruption.
|
||||
|
||||
The file is repaired in memory. Therefore, enough virtual memory
|
||||
@w{(RAM + swap)} to contain the largest damaged member is required.
|
||||
|
@ -765,23 +766,22 @@ repairs more efficiently the worst errors.
|
|||
@cindex merging files
|
||||
|
||||
If you have several copies of a file but all of them are too damaged to
|
||||
repair them (@pxref{Repairing one byte}), lziprecover can try to produce a
|
||||
correct file by merging the good parts of the damaged copies.
|
||||
repair them individually (@pxref{Repairing one byte}), lziprecover can try
|
||||
to produce a correct file by merging the good parts of the damaged copies.
|
||||
|
||||
The merge may succeed even if some copies of the file have all the
|
||||
headers and trailers damaged, as long as there is at least one copy of
|
||||
every header and trailer intact, even if they are in different copies of
|
||||
the file.
|
||||
The merge may succeed even if some copies of the file have all the headers
|
||||
and trailers damaged, as long as there is at least one copy of every header
|
||||
and trailer intact, even if they are in different copies of the file.
|
||||
|
||||
The merge will fail if the damaged areas overlap (at least one byte is
|
||||
damaged in all copies), or are adjacent and the boundary can't be
|
||||
determined, or if the copies have too many damaged areas.
|
||||
The merge fails if the damaged areas overlap (at least one byte is damaged
|
||||
in all copies), or are adjacent and the boundary can't be determined, or if
|
||||
the copies have too many damaged areas.
|
||||
|
||||
All the copies to be merged must have the same size. If any of them is
|
||||
larger or smaller than it should, either because it has been truncated
|
||||
or because it got some garbage data appended at the end, it can be
|
||||
brought to the correct size with the following command before merging it
|
||||
with the other copies:
|
||||
larger or smaller than it should, either because it has been truncated or
|
||||
because it got some garbage data appended at the end, it can be brought to
|
||||
the correct size with the following command before merging it with the other
|
||||
copies:
|
||||
|
||||
@example
|
||||
ddrescue -s<correct_size> -x<correct_size> file.lz correct_size_file.lz
|
||||
|
@ -1080,7 +1080,7 @@ archiver and the
|
|||
|
||||
Tarlz creates tar archives using a simplified and safer variant of the POSIX
|
||||
pax format compressed in lzip format, keeping the alignment between tar
|
||||
members and lzip members. The resulting multimember tar.lz archive is fully
|
||||
members and lzip members. The resulting multimember tar.lz archive is
|
||||
backward compatible with standard tar tools like GNU tar, which treat it
|
||||
like any other tar.lz archive.
|
||||
@ifnothtml
|
||||
|
@ -1199,7 +1199,7 @@ represents one byte; a box like this:
|
|||
represents a variable number of bytes.
|
||||
|
||||
@sp 1
|
||||
A lzip file consists of a series of independent "members" (compressed data
|
||||
A lzip file consists of one or more 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.
|
||||
|
@ -1277,7 +1277,7 @@ padding zero bytes to a lzip file.
|
|||
Useful data added by the user; an "End Of File" string (to check that the
|
||||
file has not been truncated), a cryptographically secure hash, a description
|
||||
of file contents, etc. It is safe to append any amount of text to a lzip
|
||||
file as long as none of the first four bytes of the text match the
|
||||
file as long as none of the first four bytes of the text matches the
|
||||
corresponding byte in the string "LZIP", and the text does not contain any
|
||||
zero bytes (null characters). Nonzero bytes and zero bytes can't be safely
|
||||
mixed in trailing data.
|
||||
|
@ -1299,7 +1299,7 @@ the noise level. Additionally, the test used by lziprecover to discriminate
|
|||
trailing data from a corrupt header has a Hamming distance (HD) of 3,
|
||||
and the 3 bit flips must happen in different magic bytes for the test to
|
||||
fail. In any case, the option @option{--trailing-error} guarantees that
|
||||
any corrupt header will be detected.
|
||||
any corrupt header is detected.
|
||||
@end itemize
|
||||
|
||||
Trailing data are in no way part of the lzip file format, but tools
|
||||
|
@ -1435,6 +1435,8 @@ lziprecover -tv rec*file.lz
|
|||
@chapter Testing the robustness of decompressors
|
||||
@cindex unzcrash
|
||||
|
||||
@xref{--unzcrash}, for a faster way of testing the robustness of lzip.
|
||||
|
||||
The lziprecover package also includes unzcrash, a program written to test
|
||||
robustness to decompression of corrupted data, inspired by unzcrash.c from
|
||||
Julian Seward's bzip2. Type @samp{make unzcrash} in the lziprecover source
|
||||
|
@ -1462,7 +1464,7 @@ first non-option argument, and then writes the file specified in the second
|
|||
non-option argument to the standard input of the subprocess, modifying the
|
||||
corresponding byte each time. Therefore unzcrash can be used to test any
|
||||
decompressor (not only lzip), or even other decoder programs having a
|
||||
suitable command line syntax.
|
||||
suitable command-line syntax.
|
||||
|
||||
If the decompressor returns with zero status, unzcrash compares the output
|
||||
of the decompressor for the original and corrupt files. If the outputs
|
||||
|
@ -1476,9 +1478,8 @@ 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}.
|
||||
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 @option{--zcmp=false} to disable
|
||||
comparisons.
|
||||
all the comparisons fail because the compressed files are compared without
|
||||
being decompressed first. Use @option{--zcmp=false} to disable comparisons.
|
||||
@ifnothtml
|
||||
@xref{Zcmp,,,zutils}.
|
||||
@end ifnothtml
|
||||
|
@ -1535,7 +1536,7 @@ with the option @option{--delta}.
|
|||
Test one byte, block, or truncation size every @var{n} bytes. If
|
||||
@option{--delta} is not specified, unzcrash tests all the bytes,
|
||||
non-overlapping blocks, or truncation sizes. Values of @var{n} smaller than
|
||||
the block size will result in overlapping blocks. (Which is convenient for
|
||||
the block size result in overlapping blocks. (Which is convenient for
|
||||
testing because there are usually too few non-overlapping blocks in a file).
|
||||
|
||||
@item -e @var{position},@var{value}
|
||||
|
@ -1588,7 +1589,7 @@ unzcrash and zcmp to use the same decompressor with a command like
|
|||
@end table
|
||||
|
||||
Exit status: 0 for a normal exit, 1 for environmental problems
|
||||
(file not found, invalid command line options, I/O errors, etc), 2 to
|
||||
(file not found, invalid command-line options, I/O errors, etc), 2 to
|
||||
indicate a corrupt or invalid input file, 3 for an internal consistency
|
||||
error (e.g., bug) which caused unzcrash to panic.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue