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.gz2. rar
Ubuntu下没有默认安装 rar,需要先进行安装:
sudo apt-get install rar
sudo apt-get install unrar2.1. rar 分卷压缩
rar a -vSIZE 压缩后的文件名 被压缩的文件或者文件夹如:
rar a -v50000k test.rar test/即,为对 test/ 文件夹进行分卷压缩,每卷的大小为50000k,压缩后的文件名为 test.rar
2.2. rar 分卷解压
对任何一个 rar 分卷仅解压,如:
rar e test.part1.rar3. pigz
pigz 是支持并行压缩的 gzip 工具,多线程压缩工具,其默认采用当前逻辑 CPU 个数来进行并发压缩,如果无法检测当前逻辑 CPU 个数,则默认并发 8 个线程.
Ubuntu 安装:
sudo apt-get install pigz3.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 files3.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.gz3.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实现大数据的高效传输