gzip解凍時の「unexpected end of file」エラー対応

投稿者: | 2022年2月23日

Raspberry PiのシステムSDカードのディスクイメージを収めた圧縮ファイルを gzip で解凍しようとするも、「 unexpected end of file 」エラーで異常終了する現象に遭遇。なんとか復元して中身を取り出せないか試してみました。

img.gz解凍時の「unexpected end of file」エラー

以前取得した、Raspberry Pi のシステムSDバックアップイメージの中身を確認する必要があったので、Ubuntuのアーカイブマネージャから展開しようとするも、途中でエラーとなり解凍できません。

図1.アーカイブマネージャの展開エラー

図1.アーカイブマネージャの展開エラー

GUIではエラーの内容すらわからないので、コマンドラインから解凍しようとして、返ってくるエラー内容がこの unexpected end of file です。

 

zcatで取り出す

圧縮ファイルの内容を表示する zcat コマンドを使って、次の要領で中身のイメージファイルを取り出してみます。

partx で確認すると、確かに2つのパーティションが存在していました。

 

gzrecoverによる修復

また、 gzrecover というコマンドを使うと修復可能とのことですが、こちらは標準では入っていないのでインストールから(公式サイトはこちら)。

早速実行してみると戻り値は無いものの、圧縮ファイルの中身であるイメージファイルが、修復されたファイルとして生成されていました。

zcat で取り出したイメージファイルと微妙にファイルサイズが異なりますが、 partx で見るパーティション情報は同じものでした。

 

取り出したイメージをマウントして確認

以前のこちらの記事に沿って、取り出したイメージをループデバイスに登録して検証してみるのですが、結果的には上述どちらのイメージを使っても同じでした。まず、 partx でループデバイスに登録してパーティションチェック。

その後の fsck では、システムルートの収められた2つ目のパーティションで大量の修復不能エラーに見舞われます。

それでも正常にマウントして、(おそらく破損箇所に当たらなければ)中身を読み出すことが出来ました。

 

後日生成された別のイメージでは問題なし

このような現象ではSDカードの破損を疑うものですが、たまたまこれより後に生成されたバックアップイメージがあったので、同様に検証してみました。

時系列的に後から生成したこのイメージでの fsck が大したエラーもなく完走したことから、SDカードメディア破損ではなさそうで一安心。

 

 

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA