Ubuntu 终端文件压缩与解压命令:tar 、rar 和 pigz.
1. tar
1.1. tar 压缩
tar -zcvf 压缩包名.tar.gz 源文件
参数说明:
[1] - -z
:解压缩类型为 .tar.gz
[2] - -c
:打包
[3] - -v
:显示过程
[4] - -f
:指定打包后的文件名
例如:
tar -zcvf test.tar.gz test/
1.2. tar 解压
tar -zxvf 压缩包名.tar.gz -C /path/to/localpath/
解压到指定的目录.
1.3. tar 分卷压缩
tar cvzpf - test/ | split -d -b 500m
将test/
文件夹分卷压缩,每卷500m,注意 test/
前面有空格. 压缩后,自动命名为x00,x01,x02...
1.4. tar 分卷解压
首先,合并各分卷:
cat x*>test.tar.gz
再解压:
tar xzvf test.tar.gz
2. rar
Ubuntu下没有默认安装 rar
,需要先进行安装:
sudo apt-get install rar
sudo apt-get install unrar
2.1. rar 分卷压缩
rar a -vSIZE 压缩后的文件名 被压缩的文件或者文件夹
如:
rar a -v50000k test.rar test/
即,为对 test/
文件夹进行分卷压缩,每卷的大小为50000k,压缩后的文件名为 test.rar
2.2. rar 分卷解压
对任何一个 rar
分卷仅解压,如:
rar e test.part1.rar
3. pigz
pigz 是支持并行压缩的 gzip 工具,多线程压缩工具,其默认采用当前逻辑 CPU 个数来进行并发压缩,如果无法检测当前逻辑 CPU 个数,则默认并发 8 个线程.
Ubuntu 安装:
sudo apt-get install pigz
3.1. pigz 命令
pigz -help
输出如:
Options:
-0 to -9, -11 Compression level (11 is much slower, a few % better)
--fast, --best Compression levels 1 and 9 respectively
-b, --blocksize mmm Set compression block size to mmmK (default 128K)
-c, --stdout Write all processed output to stdout (won't delete)
-d, --decompress Decompress the compressed input
-f, --force Force overwrite, compress .gz, links, and to terminal
-h, --help Display a help screen and quit
-i, --independent Compress blocks independently for damage recovery
-k, --keep Do not delete original file after processing
-K, --zip Compress to PKWare zip (.zip) single entry format
-l, --list List the contents of the compressed input
-L, --license Display the pigz license and quit
-n, --no-name Do not store or restore file name in/from header
-N, --name Store/restore file name and mod time in/from header
-p, --processes n Allow up to n compression threads (default is the
number of online processors, or 8 if unknown)
-q, --quiet Print no messages, even on error
-r, --recursive Process the contents of all subdirectories
-R, --rsyncable Input-determined block locations for rsync
-S, --suffix .sss Use suffix .sss instead of .gz (for compression)
-t, --test Test the integrity of the compressed input
-T, --no-time Do not store or restore mod time in/from header
-v, --verbose Provide more verbose output
-V --version Show the version of pigz
-z, --zlib Compress to zlib (.zz) instead of gzip format
-- All arguments after "--" are treated as files
3.2. pigz 压缩
如:
tar -cvf - test/ | pigz -p 4 > test.tar.gz #4线程压缩
tar -cvf - test/ | pigz -p 8 > test.tar.gz #8线程压缩
tar -cvf - test/ | pigz -p 16 > test.tar.gz #16线程压缩
3.3. pigz 解压
如:
pigz -p 4 -d test.tar.gz
pigz -p 8 -d test.tar.gz
pigz -p 16 -d test.tar.gz
unpigz test.fastq.gz
3.4. pigz 多线程速率对比
程序 | 线程数 | 时间 |
---|---|---|
gzip | 1 | 5m28.824s |
pigz | 4 | 1m18.236s |
pigz | 8 | 0m42.670s |
pigz | 16 | 0m23.643s |
pigz | 32 | 0m17.523s |
可以看出,使用多线程 pigz
进行压缩能大大的缩短压缩时间,特别是从单线程的 gzip
到 4 线程的pigz
压缩时间缩短了4倍,继续加多线程数,压缩时间减少逐渐不那么明显.
虽然 pigz
能大幅度的缩短运行时间,但其是以牺牲cpu为代价的,所以对于cpu使用较高的场景不太宜使用较高的线程数,一般而言使用4线程或8线程较为合适.
4. 参考
[1] - linux .tar.gz文件 解压缩命令简单使用
[2] - 分卷压缩及解压分卷压缩文件
[3] - linux tar.gz zip 解压缩 压缩命令
[4] - pigz manual
[5] - 多线程压缩工具pigz使用
[6] - 使用tar+pigz+ssh实现大数据的高效传输