使用tar解压文件提示gzip: stdin: not in gzip format错误
1. 问题描述
使用docker save xxxx > xxx.tar
导出镜像,由于文件太大,需要split -b 3000m xxx.tar
来分割文件,刻录到光盘然后导入到服务器上。
后面使用cat * | tar -xzv
来解压压缩的镜像,随后使用docker load
导入镜像。
开始的几次都没有问题,不过昨天同样的过程,提示gzip: stdin: not in gzip format
。
2. 问题原因
网上搜了一下,找到了这个网页,意思是这个文件不是gzip格式的,使用tar -xvf
来解压就好了。于是尝试了一下,倒是执行成功了,但是解压出来一堆的文件夹,而不是一个镜像文件。
于是求教于同事,把上面整个过程重复了一下,然后发现了问题所在。开始几次没有问题,是因为我多了一个tar的过程。我把几个镜像放入了一个文件夹里,然后压缩了文件夹;最后一次失败了,是因为我使用docker save
之后直接split了,没有tar的这个过程。所以解压的是一个image文件,才会解压出一堆的文件夹。
3. 解决方式
知道了原因,想解决办法就好。image文件被split,后面只需要合并就好了,合并后即可load镜像。命令如下:
cat xx* > image.tar