Invoking gzip (GNU Gzip)

From Get docs
Gzip/docs/latest/Invoking-gzip

3 Invoking gzip

The format for running the gzip program is:

gzip option …

gzip supports the following options:

--stdout
--to-stdout
-c

Write output on standard output; keep original files unchanged. If there are several input files, the output consists of a sequence of independently compressed members. To obtain better compression, concatenate all input files before compressing them.

--decompress
--uncompress
-d

Decompress.

--force
-f

Force compression or decompression even if the file has multiple links or the corresponding file already exists, or if the compressed data is read from or written to a terminal. If the input data is not in a format recognized by gzip, and if the option --stdout is also given, copy the input data without change to the standard output: let zcat behave as cat. If -f is not given, and when not running in the background, gzip prompts to verify whether an existing file should be overwritten.

--help
-h

Print an informative help message describing the options then quit.

--keep
-k

Keep (don’t delete) input files during compression or decompression.

--list
-l

For each compressed file, list the following fields:

compressed size: size of the compressed file
uncompressed size: size of the uncompressed file
ratio: compression ratio (0.0% if unknown)
uncompressed_name: name of the uncompressed file

The uncompressed size is given as -1 for files not in gzip format, such as compressed ‘.Z’ files. To get the uncompressed size for such a file, you can use:

zcat file.Z | wc -c

In combination with the --verbose option, the following fields are also displayed:

method: compression method (deflate,compress,lzh,pack)
crc: the 32-bit CRC of the uncompressed data
date & time: timestamp for the uncompressed file

The CRC is given as ffffffff for a file not in gzip format.

With --verbose, the size totals and compression ratio for all files is also displayed, unless some sizes are unknown. With --quiet, the title and totals lines are not displayed.

The gzip format represents the input size modulo 2^32, so the uncompressed size and compression ratio are listed incorrectly for uncompressed files 4 GiB and larger. To work around this problem, you can use the following command to discover a large uncompressed file’s true size:

zcat file.gz | wc -c
--license
-L

Display the gzip license then quit.

--no-name
-n

When compressing, do not save the original file name and timestamp by default. (The original name is always saved if the name had to be truncated.) When decompressing, do not restore the original file name if present (remove only the gzip suffix from the compressed file name) and do not restore the original timestamp if present (copy it from the compressed file). This option is the default when decompressing.

--name
-N

When compressing, always save the original file name, and save the original timestamp if the original is a regular file; this is the default. When decompressing, restore the original file name and timestamp if present. This option is useful on systems which have a limit on file name length or when the timestamp has been lost after a file transfer.

--quiet
-q

Suppress all warning messages.

--recursive
-r

Travel the directory structure recursively. If any of the file names specified on the command line are directories, gzip will descend into the directory and compress all the files it finds there (or decompress them in the case of gunzip).

--rsyncable

Cater better to the rsync program by periodically resetting the internal structure of the compressed data stream. This lets the rsync program take advantage of similarities in the uncompressed input when synchronizing two files compressed with this flag. The cost: the compressed output is usually about one percent larger.

--suffix suf
-S suf

Use suffix suf instead of ‘.gz’. Any suffix can be given, but suffixes other than ‘.z’ and ‘.gz’ should be avoided to avoid confusion when files are transferred to other systems. A null suffix forces gunzip to try decompression on all given files regardless of suffix, as in:

gunzip -S "" *        (*.* for MSDOS)

Previous versions of gzip used the ‘.z’ suffix. This was changed to avoid a conflict with pack.

--synchronous

Use synchronous output, by transferring output data to the output file’s storage device when the file system supports this. Because file system data can be cached, without this option if the system crashes around the time a command like ‘gzip FOO’ is run the user might lose both FOO and FOO.gz; this is the default with gzip, just as it is the default with most applications that move data. When this option is used, gzip is safer but can be considerably slower.

--test
-t

Test. Check the compressed file integrity.

--verbose
-v

Verbose. Display the name and percentage reduction for each file compressed.

--version
-V

Version. Display the version number and compilation options, then quit.

--fast
--best
-n

Regulate the speed of compression using the specified digit n, where -1 or --fast indicates the fastest compression method (less compression) and --best or -9 indicates the slowest compression method (optimal compression). The default compression level is -6 (that is, biased towards high compression at expense of speed).