Linux命令行tar/zip/7z对文件分卷压缩/解压缩

分为两部分,文件压缩/解压缩 和 文件校验。

1. 单文件压缩

1.1 自动tar

# 其中 '*' 替换为'gz', 'bz2', 'xz'等.
$ tar -acf hello.tar.* hello/

1.2 gz

$ tar -zcf hello.tar.gz hello/

1.3 bz2

$ tar -jcf hello.tar.bz2 hello/

1.4 xz

$ tar -Jcf hello.tar.xz hello/

1.5 zip

$ zip -r hello.zip hello/

1.6 7zip

$ 7z a hello.7z hello/

2. 单文件解压

2.1 自动tar

# 其中 '*' 替换为'gz', 'bz2', 'xz'等.
$ tar -xf hello.tar.*

2.2 gz

$ tar -zxf hello.tar.gz

2.3 bz2

$ tar -jxf hello.tar.bz2

2.4 xz

$ tar -Jxf hello.tar.xz

2.5 zip

$ unzip hello.zip

2.6 7zip

$ 7z x hello.7z

3. 分卷压缩

3.1 gz

$ tar -zcf - hello/ | split -d -b 100m - hello.tar.gz.

或者:

$ tar -acf hello.tar.gz hello/
$ cat hello.tar.gz | split -d -b 100m - hello.tar.gz.

3.2 bz2

$ tar -jcf - hello/ | split -d -b 100m - hello.tar.bz2.

3.3 xz

$ tar -Jcf - hello/ | split -d -b 100m - hello.tar.xz.

3.4 zip

$ zip -s 100m -r drivers.zip drivers/

3.5 7zip

$ 7z a -v100m hello.7z hello/

4. 分卷解压

4.1 gz

$ cat hello.tar.gz.* | tar -zxf -

4.2 bz2

$ cat hello.tar.bz2.* | tar -jxf -

4.3 xz

$ cat hello.tar.xz.* | tar -Jxf -

4.4 zip

$ ls drivers.z*
drivers.z01  drivers.z03  drivers.z05  drivers.z07  drivers.z09  drivers.z11  drivers.z13  drivers.zip
drivers.z02  drivers.z04  drivers.z06  drivers.z08  drivers.z10  drivers.z12  drivers.z14

$ zip -F drivers.zip --out single-drivers.zip
$ unzip single-drivers.zip

4.5 7zip

$ ls hello.7z.00*
hello.7z.001  hello.7z.003  hello.7z.005
hello.7z.002  hello.7z.004

$ 7z x hello.7z.001

5. MD5文件校验

分卷文件,由于数据分散,分发出错概率比单文件大,建议分发文件中附带文件哈希校验码,其中md5,sha256较为常用,这里用md5:

1. 当前目录:

$ du -sh *
50M     linux-6.1.123.tar.xz.00
50M     linux-6.1.123.tar.xz.01
32M     linux-6.1.123.tar.xz.02

2. 在当前目录,生成md5哈希:

$ md5sum * > linux-6.1.123.tar.xz.md5sum
$ cat linux-6.1.123.tar.xz.md5sum
528c63709f2ab13c7b8ed02195280aef  linux-6.1.123.tar.xz.00
8209cb6b81cd14efcbcab99b923d57cb  linux-6.1.123.tar.xz.01
44c877245ede86c64d51e64e95738b21  linux-6.1.123.tar.xz.02 

3. 在接收方,校验md5哈希:

$ md5sum -c linux-6.1.123.tar.xz.md5sum
linux-6.1.123.tar.xz.00: OK
linux-6.1.123.tar.xz.01: OK
linux-6.1.123.tar.xz.02: OK

6. 不同压缩算法比较

以下数据是在虚拟机中进行操作得出,使用的是linux-6.1.123.tar.xz作为数据源,仅供参考:

Name Size 空间占比 压缩耗时 解压耗时
原件 1.5G 100% NULL NULL
gz 216M 15% 0m33.838s 0m9.017s
bz2 160M 11% 1m28.464s 0m29.880s
xz 132M 9% 6m47.977s 0m15.378s
zip 267M 18.5% 1m8.041s 1m5.549s
7zip 131M 9% 4m59.430s 0m14.859s

用哪种算法,自行取舍。

posted @ 2025-01-07 19:43  this毛豆  阅读(2179)  评论(0)    收藏  举报