破損tgzファイルの復旧作業。
昨日の日記にも書きましたが、
共有ディスクの移行中にディスクエラーが発生し、
一部ファイルが破損しました。
今日は、仕事そっちのけでファイルの修復作業。
そもそも、出ていたエラーは
ad2: TIMEOUT - READ_DMA retrying (2 retries left) LBA=41314837
という感じ。
なんのこっちゃ?でしょ?
共有ディスク上のディレクトリには
アプリケーションやら、mp3やら、家族の写真やらが
全部tgz(tar.gz)形式で保存されていたのです。
(というか、一時サーバへの移行時に固めたのです。)
どうも原因はハードディスク本体ではなく
ハードディスクにつながっているケーブルだったようで
それに早く気づいていればディスクを
別マシンにつけて解決!だったのに。
ケーブルがおかしいまま、共有ディスクから
家族の写真.tgzをmvしてしまったのです。
ああ…。
で、ディスクを別マシンにつなげ
他のファイルたちは無事に戻せたのですが
家族の写真が…。おお…。
とりあえず、普通に
# gunzip 家族の写真.tgz
とやっても、
gunzip: 家族の写真.tgz: invalid compressed data--crc error
gunzip: 家族の写真.tgz: invalid compressed data--length error
と出てしまい、.tarにはなりませんでした。
ので、
# zcat 家族の写真.tgz > recover.tar
として、先ほどと同じメッセージは出るものの、
一応recover.tarはできました。
さて、ここから。
# tar xvf recover.tar
とすると、1つ目のファイルで
tar: Unrecognized archive format: Inappropriate file type or format
と出ます。
ディレクトリまでは作られるものの、ファイルは1つも解凍できません。
こうなったら、力技しかありません。
Windows端末へrecover.tarをダウンロード。(100M超)
そして、バイナリエディタで開きます。
tarファイルは、かならず
512バイトのヘッダ情報+データ
が固められているファイル数分(ディレクトリも含め)連なっています。
なので、1ファイル目の情報
(1ファイル目のヘッダから2ファイル目のヘッダの前まで)
を切り取って、別名のtarファイルとして保存します。
これで解決。
とはいえ、1ファイル目はどうするの?
これはたぶん…どうしようもありません。
何バイト目がおかしいとか、gzipのアルゴリズムとかが
簡単にわかれば直せるのでしょうが。
もうちょっとねばって調べてみます。
共有ディスクの移行中にディスクエラーが発生し、
一部ファイルが破損しました。
今日は、仕事そっちのけでファイルの修復作業。
そもそも、出ていたエラーは
ad2: TIMEOUT - READ_DMA retrying (2 retries left) LBA=41314837
という感じ。
なんのこっちゃ?でしょ?
共有ディスク上のディレクトリには
アプリケーションやら、mp3やら、家族の写真やらが
全部tgz(tar.gz)形式で保存されていたのです。
(というか、一時サーバへの移行時に固めたのです。)
どうも原因はハードディスク本体ではなく
ハードディスクにつながっているケーブルだったようで
それに早く気づいていればディスクを
別マシンにつけて解決!だったのに。
ケーブルがおかしいまま、共有ディスクから
家族の写真.tgzをmvしてしまったのです。
ああ…。
で、ディスクを別マシンにつなげ
他のファイルたちは無事に戻せたのですが
家族の写真が…。おお…。
とりあえず、普通に
# gunzip 家族の写真.tgz
とやっても、
gunzip: 家族の写真.tgz: invalid compressed data--crc error
gunzip: 家族の写真.tgz: invalid compressed data--length error
と出てしまい、.tarにはなりませんでした。
ので、
# zcat 家族の写真.tgz > recover.tar
として、先ほどと同じメッセージは出るものの、
一応recover.tarはできました。
さて、ここから。
# tar xvf recover.tar
とすると、1つ目のファイルで
tar: Unrecognized archive format: Inappropriate file type or format
と出ます。
ディレクトリまでは作られるものの、ファイルは1つも解凍できません。
こうなったら、力技しかありません。
Windows端末へrecover.tarをダウンロード。(100M超)
そして、バイナリエディタで開きます。
tarファイルは、かならず
512バイトのヘッダ情報+データ
が固められているファイル数分(ディレクトリも含め)連なっています。
なので、1ファイル目の情報
(1ファイル目のヘッダから2ファイル目のヘッダの前まで)
を切り取って、別名のtarファイルとして保存します。
これで解決。
とはいえ、1ファイル目はどうするの?
これはたぶん…どうしようもありません。
何バイト目がおかしいとか、gzipのアルゴリズムとかが
簡単にわかれば直せるのでしょうが。
もうちょっとねばって調べてみます。
このネタへのコメント:
コメントはありません。