Ubuntu - 文件压缩命令及工具

Ubuntu 终端文件压缩与解压命令:tarrarpigz.

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 多线程速率对比

多线程压缩工具pigz使用

程序线程数时间
gzip15m28.824s
pigz41m18.236s
pigz80m42.670s
pigz160m23.643s
pigz320m17.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实现大数据的高效传输

Last modification:September 28th, 2019 at 04:12 pm

Leave a Comment