私が作成し、squashfsで圧縮した古いファイルシステムのバックアップがあります。これはext4ファイルシステムに保存されていますが、少しのビット破損があると思われます。このファイルのバックアップはありません。このsquashfsファイルを保存する方法はありますか?
$ unsquashfs olddrive.sfs
Can't find a SQUASHFS superblock on olddrive.sfs
編集:情報を追加しました。
$ file olddrive.sfs
olddrive.sfs: data
$ sudo mount -t squashfs -o ro olddrive.sfs /tmp/sq
mount: /tmp/sq: wrong fs type, bad option, bad superblock on /dev/loop10, missing codepage or helper program, or other error.
編集:興味深いことに、ファイルでhexdumpを実行すると完全にゼロで始まることがわかります。ディスクからファイルを読み取るのに不良セクタがあり、ゼロに置き換えられた可能性がありますか?
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0000060 8008 0000 0010 0008 0000 37fd 587a 005a
0000070 0100 2269 36de c003 ffa5 8003 4080 0121
0000080 0010 e48c b888 59ef efe8 5dfe 7500 0d80
0000090 8c81 25e2 b847 a0cc 766a b649 c919 3768
結論として:
私は他の良いsquashfsのヘッダーの数バイトを破損したsquashfsにコピー(上書き)しようとしましたが、成功しませんでした。私の破損したsquashfsのヘッダーに96個の0バイトがあるようです。スーパーブロックには重複データがないように見えるため、スーパーブロックが破損するとアーカイブが失われます。数バイトしか破損していない場合は、ユーザーK-att-のソリューションで問題が解決した可能性があります。
この種の損傷/損失を防ぐためには、par2
(Parchive)の使用をお勧めします。以前は知りませんでしたが、par2
最小限の破損から回復できる小さなファイルを作成できます(ドライブセクタが破損している場合)。
答え1
16進エディタを使用してファイルを確認してください。 (例:hexedit)最初の4バイトを0x73717368(68 73 71 73 - > hsqs)に変更してみてください。 (もちろんファイルをバックアップしてください。) https://dr-emann.github.io/squashfs/ どのバージョンのsquashfsを使用していますか?