分为两部分,文件压缩/解压缩 和 文件校验。
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 |
用哪种算法,自行取舍。