bzip2: Data integrity error when decompressing. Input file = (stdin), output file = (stdout) It is possible that the compressed file(s) have become corrupted. You can use the -tvv option to test integrity of such files. You can use the `bzip2recover' program to attempt to recover data from undamaged sections of corrupted files. tar: アーカイブ中に予期せぬ EOF があります tar: アーカイブ中に予期せぬ EOF があります tar: Error is not recoverable: exiting now70GBのファイルを20GBまで圧縮してあるのだが、どうやら壊れてしまったようだ。
bzip2recoverを使えということで、使ってみる。
block 49998 runs from 108483591327 to 108485995530 block 49999 runs from 108485995579 to 108488398408 block 50000 runs from 108488398457 to 108490796940 bzip2recover: `all0609.tar.bz2' appears to contain more than 50000 blocks bzip2recover: and cannot be handled. To fix, increase bzip2recover: BZ_MAX_HANDLED_BLOCKS in bzip2recover.c, and recompile.50000ブロック以上には対応出来ないようだ。
コンパイルし直せとのこと。
http://www.bzip.org/
からソースをダウンロード
bzip2recover.cの真ん中ぐらいに
#define BZ_MAX_HANDLED_BLOCKS 50000という記述があるので、これを増やすと良いらしい。
tar.bz2のファイルサイズは21,113,008,629なんだけど、どのくらいまで増やせば良いのだろう。
この進捗に表示されている108,490,796,940を調べてみる。
ソースを追いかけてみると、このfromとtoはbStartとbEnd、そして他の場所に
bStart[currBlock] = bitsRead;という記述があることから、ビット表記らしい。
ファイルサイズをビット換算すると168,904,069,032。
8分の5ぐらいのところまで処理しているようなので、余裕を持って2倍にしてみる。
#define BZ_MAX_HANDLED_BLOCKS 100000configureなどはないので、直接make。
再度bzip2recoverを実行。
ls rec15610all0609.tar.bz2 rec31226all0609.tar.bz2 rec46842all0609.tar.bz2 rec62458all0609.tar.bz2 rec78074all0609.tar.bz2 rec15611all0609.tar.bz2 rec31227all0609.tar.bz2 rec46843all0609.tar.bz2 rec62459all0609.tar.bz2 rec78075all0609.tar.bz2 rec15612all0609.tar.bz2 rec31228all0609.tar.bz2 rec46844all0609.tar.bz2 rec62460all0609.tar.bz2 rec78076all0609.tar.bz2 rec15613all0609.tar.bz2 rec31229all0609.tar.bz2 rec46845all0609.tar.bz2 rec62461all0609.tar.bz2 rec78077all0609.tar.bz28万近いファイルが生成された。
これを結合しつつ展開
find . -name "rec*.bz2" | sort | xargs -n1 bzcat | dd bs=65536 | tar xvf - all0609.pgbackup bzcat: Data integrity error when decompressing. Input file = ./rec15012all0609.tar.bz2, output file = (stdout) It is possible that the compressed file(s) have become corrupted. You can use the -tvv option to test integrity of such files. You can use the `bzip2recover' program to attempt to recover data from undamaged sections of corrupted files.どうやらrec15012all0609.tar.bz2がまだ壊れているようだ。
このファイルだけを再度bzip2recoverに掛けてみたが、エラーは消えず。
結局この部分だけを破棄することとなった。
0 件のコメント:
コメントを投稿