1. 描述
zstd 是一个高性能的压缩工具,它可以在 Linux 系统中用来压缩和解压文件。
2. 语法
Usage :
zstd [args] [FILE(s)] [-o file]
FILE : a filename
with no FILE, or when FILE is - , read standard input
Arguments :
-# : # compression level (1-19, default: 3)
-d : decompression
-D file: use `file` as Dictionary
-o file: result stored into `file` (only if 1 input file)
-f : overwrite output without prompting and (de)compress links
--rm : remove source file(s) after successful de/compression
-k : preserve source file(s) (default)
-h/-H : display help/long help and exit
Advanced arguments :
-V : display Version number and exit
-v : verbose mode; specify multiple times to increase verbosity
-q : suppress warnings; specify twice to suppress errors too
-c : force write to standard output, even if it is the console
-l : print information about zstd compressed files
--exclude-compressed: only compress files that are not previously compressed
--ultra : enable levels beyond 19, up to 22 (requires more memory)
--long[=#]: enable long distance matching with given window log (default: 27)
--fast[=#]: switch to very fast compression levels (default: 1)
--adapt : dynamically adapt compression level to I/O conditions
--stream-size=# : optimize compression parameters for streaming input of given number of bytes
--size-hint=# optimize compression parameters for streaming input of approximately this size
--target-compressed-block-size=# : make compressed block near targeted size
-T# : spawns # compression threads (default: 1, 0==# cores)
-B# : select size of each job (default: 0==automatic)
--rsyncable : compress using a rsync-friendly method (-B sets block size)
--no-dictID : don't write dictID into header (dictionary compression)
--[no-]check : integrity check (default: enabled)
--[no-]compress-literals : force (un)compressed literals
-r : operate recursively on directories
--output-dir-flat[=directory]: all resulting files stored into `directory`.
--format=zstd : compress files to the .zst format (default)
--test : test compressed file integrity
--[no-]sparse : sparse mode (default: enabled on file, disabled on stdout)
-M# : Set a memory usage limit for decompression
--no-progress : do not display the progress bar
-- : All arguments after "--" are treated as files
Dictionary builder :
--train ## : create a dictionary from a training set of files
--train-cover[=k=#,d=#,steps=#,split=#,shrink[=#]] : use the cover algorithm with optional args
--train-fastcover[=k=#,d=#,f=#,steps=#,split=#,accel=#,shrink[=#]] : use the fast cover algorithm with optional args
--train-legacy[=s=#] : use the legacy algorithm with selectivity (default: 9)
-o file : `file` is dictionary name (default: dictionary)
--maxdict=# : limit dictionary to specified size (default: 112640)
--dictID=# : force dictionary ID to specified value (default: random)
Benchmark arguments :
-b# : benchmark file(s), using # compression level (default: 3)
-e# : test all compression levels from -bX to # (default: 1)
-i# : minimum evaluation time in seconds (default: 3s)
-B# : cut file into independent blocks of size # (default: no block)
--priority=rt : set process priority to real-time
3. 参数
以下是一些常见的参数及其解释:
-
-o
或--output
:
用于指定输出文件的名称。如果未指定,输出将默认发送到标准输出(stdout)。 -
-d
或--decompress
:
用于指示zstd
执行解压缩操作。 -
-f
或--force
:
强制覆盖已存在的输出文件而不提示。 -
-c
或--stdout
:
将输出发送到标准输出(stdout),而不是写入文件。 -
-q
或--quiet
:
减少命令的输出信息,不显示进度条和警告。 -
-v
或--verbose
:
增加命令的详细程度,显示更多信息。 -
-t
或--test
:
测试压缩文件的完整性而不解压。 -
-l
或--list
:
显示压缩文件的元数据,如压缩大小、原始大小、压缩级别等。 -
-T#
或--threads=#
:
指定用于压缩和解压缩的线程数。 -
-#
:
其中#
是一个介于 1 到 22 的数字,用于指定压缩级别。数字越大,压缩率越高,但压缩和解压缩速度越慢。 -
--long
:
使用 64 位模式进行压缩,允许处理大于 4GB 的文件。 -
--ultra
:
使用超高压缩级别,提供更高的压缩率,但压缩和解压缩速度更慢。 -
--fast
:
使用快速压缩模式,牺牲一些压缩率以提高压缩速度。 -
--adapt
:
使用自适应压缩模式,根据数据特性动态调整压缩策略。 -
--single-thread
:
强制使用单线程进行压缩或解压缩。 -
--rm
:
在成功解压缩后删除源文件。 -
--no-progress
:
不显示压缩过程中的进度条。 -
--memory=[#]
:
指定用于压缩的内存大小,单位为 MB。
4. 例子
(1)压缩单个文件:
zstd -o compressed_file.zst original_file
这个命令将 original_file
压缩成 compressed_file.zst
。
(2)解压缩文件:
zstd -d compressed_file.zst
这个命令将 compressed_file.zst
解压缩。
(3)使用特定压缩级别:
zstd -5 -o high_compression.zst large_file
这里使用了压缩级别 5 来压缩 large_file
。
(4)压缩文件夹:
zstd -r -o compressed_dir.zst directory_to_compress
这个命令递归地压缩 directory_to_compress
目录。
(5)解压缩目录:
zstd -d -o output_directory compressed_dir.zst
这个命令将 compressed_dir.zst
解压缩到 output_directory
。
(6)测试压缩文件的完整性:
zstd -t compressed_file.zst
这个命令测试 compressed_file.zst
是否完整。
(7)查看压缩文件的详细信息:
zstd -l compressed_file.zst
这个命令显示 compressed_file.zst
的详细信息,如压缩大小、原始大小等。
(8)使用多线程压缩:
zstd -T4 -o multithreaded.zst large_file
这个命令使用 4 个线程来压缩 large_file
。
(9)强制覆盖已存在的文件:
zstd -f -o existing.zst large_file
如果 existing.zst
已存在,使用 -f
参数强制覆盖。