使用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