赞
踩
大家可能会遇到这样的情况,一个文件很大,压缩成一个压缩包后还是很大,不方便传输(比如需要微信给别人,微信限定传输的文件大小为100M),那我们可以通过分卷压缩成几个压缩包,然后分卷传输之后在合并解压,再通过md5码校验两个文件是否一致。
先将文件普通压缩
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压缩后进行匿名压缩包,再将匿名压缩包传输到管道符右边,右边’-'接收左边传输的结果压缩包,再将其分割
第一种方法:先将分卷的压缩包合并为一个压缩包
cat split.tar.gz.* > split_bak.tar.gz
再解压合并的压缩包到指定文件夹
tar -zxv split_bak.tar.gz -C bak/
合并成一条命令
cat split.tar.gz.* | tar -zxv - -C bak/
md5sum split.dat
md5sum bak/split.dat
先压缩成一个压缩包
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文件写入终端)
Linux中unzip语法及参数解释
先将分卷的压缩包合并为一个压缩包
cat ziptest.* > ziptest_bak.zip
unzip ziptest_bak.zip -d bak/
md5sum bak/split_bak.dat
md5sum split.dat
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。