大家可能会遇到这样的情况,一个文件很大,压缩成一个压缩包后还是很大,不方便传输(比如需要微信给别人,微信限定传输的文件大小为100M),那我们可以通过分卷压缩成几个压缩包,然后分卷传输之后在合并解压,再通过md5码校验两个文件是否一致。

一、通过tar分卷压缩及解压

Linux中tar命令语法及参数解释

1. 分卷压缩

先将文件普通压缩

tar -zcf split.gz split.dat

再将压缩好的压缩包分割

split -b 100m -d -a 1 split.gz split.tar.gz.

合并成一条命令

tar -zcf - split.dat | split -b 100m -d -a 1 - split.tar.gz.

命令中相关参数解释:
-b参数后是你想要的每个包的大小,只输入数字默认单位是byte
输入数字+K,单位是KB
输入数字+M,单位是MB
输入数字+G,单位是GB
依次类推T, P, E, Z, Y

-d参数指定生成的分割包后缀为数字的形式
-a x来设定序列的长度(默认值是2),这里设定序列的长度为1

注意: 上面命令中管道符两边都有一个’-’,可以理解为占位符用来管道传输的
比如第一个’-‘就是将split.dat压缩后进行匿名压缩包,再将匿名压缩包传输到管道符右边,右边’-'接收左边传输的结果压缩包,再将其分割

2. 解压

第一种方法:先将分卷的压缩包合并为一个压缩包

cat split.tar.gz.* > split_bak.tar.gz

再解压合并的压缩包到指定文件夹

tar -zxv split_bak.tar.gz -C bak/

合并成一条命令

cat split.tar.gz.* | tar -zxv - -C bak/

3. 校验两个文件md5码是否一致

md5sum split.dat

md5sum bak/split.dat

二、通过zip分卷压缩及解压

Linux中zip语法及参数解释

1. 分卷压缩

先压缩成一个压缩包

zip split.zip split.dat

再将压缩包分割

zip -s 100m split.zip --out ziptest

zip命令无法像上面tar命令一样进行合并命令,合并命令会报错如下:

zip - split.dat | zip -s 100m - --out ziptest
zip error: Invalid command arguments (cannot write zip file to terminal)

无效的命令参数(无法将zip文件写入终端)

2. 解压

Linux中unzip语法及参数解释
先将分卷的压缩包合并为一个压缩包

cat ziptest.* > ziptest_bak.zip
unzip ziptest_bak.zip -d bak/

3. 校验两个文件md5码是否一致

md5sum bak/split_bak.dat
md5sum split.dat
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐