打包文件进行大包拆分,合并

经常会打包一些目录进行压缩或文件压缩,但是有时候会取决某些限制,始终压缩不到自己想要的大小。

以往都能勉强,但这次必须要压缩到比较小的单个文件。然后需要找各种资料看怎么解决此问题,后来发现了 split 命令。问题就解决了

#用法
#压缩
tar zcf - <要打包的目录/> | split -b 1[ c | K | M | G ] - <打包后的名字>
# "-"不要漏了,那是tar的ouput和split的input的参数。
#解压
cat <打包后的名字*> | tar zxf

# 例
#压缩
tar zcf - logs/ | split -b 18M - logs.tar.gz.
#解压
cat logs.tar.gz.a* | tar zxf
这里对命令做一些讲解。

压缩和分割命令行中的命令对应的I/O文件名参数,其中-表示标准输入或输出。那么结合上面的例子,tar命令表示的意思就是将logs目录压缩,生成的结果直接输送到标准输出上;而split命令表示从标准输入获得文件内容进行分割,结果文件前缀为logs.tar.gz.。二者再通过管道将各自的标准输入输出对接起来。

这里再解释一下split命令的参数含义:
-b SIZE 指定每个文件的大小,其单位可以为b(512字节)、k(KB)、M(MB)G(GB)
-d 使用数字而不是字母作为后缀名
-a X 指定后缀名的长度,默认为2位

这样上面的命令就可以变化为:
tar jcf - logs/ |split -b 1m -d -a 1- logs.tar.bz2.

posted @ 2020-06-18 15:43  idlestation  阅读(63)  评论(0编辑  收藏  举报