Bash

“gzip:stdin:文件意外結束”在使用 tar 和 split 後

  • November 13, 2022

我在一個文件夾中有一個大約 600MB 圖像的文件夾output_test。然後我使用以下命令創建 100MB 的 tar.gz 文件塊:

tar -czf - output_test/ | split --bytes=100MB -d -a 3 - output_test.tar.gz.

這給了我以下文件

-rw-rw-r-- 1 martin 96M Nov 13 17:12 output_test.tar.gz.000
-rw-rw-r-- 1 martin 96M Nov 13 17:12 output_test.tar.gz.001
-rw-rw-r-- 1 martin 96M Nov 13 17:12 output_test.tar.gz.002
-rw-rw-r-- 1 martin 96M Nov 13 17:12 output_test.tar.gz.003
-rw-rw-r-- 1 martin 96M Nov 13 17:12 output_test.tar.gz.004
-rw-rw-r-- 1 martin 96M Nov 13 17:12 output_test.tar.gz.005
-rw-rw-r-- 1 martin 26M Nov 13 17:12 output_test.tar.gz.006

看起來一切都很好(儘管總大小似乎沒有減少?),但是當我嘗試解壓縮其中一個文件時

tar -xzf output_test.tar.gz.000

我收到以下錯誤

gzip: stdin: unexpected end of file
tar: Unexpected EOF in archive
tar: Unexpected EOF in archive
tar: Error is not recoverable: exiting now

有誰知道為什麼會發生這個錯誤?

雖然看起來文件提取得很好。所以,我不確定我是否可以安全地忽略這個錯誤?

當您像這樣拆分輸出時,結果是主文件的*一部分;*他們自己並不完整。

因此,如果您只查看“.000”文件,那麼您只會查看輸出的第一部分。

要重新創建“真實”文件,您需要將它們放在一起。

所以你會做這樣的事情:

cat output_test.tar.gz.* | tar xzf -

引用自:https://unix.stackexchange.com/questions/724729