2つのパーティションを持つSDDがあります。 1つ目は32Gで、2つ目はドライブの残りのスペースを占めています。 1つ目はUbuntuがインストールされているルートパーティションです。二つ目は一般収納空間である。
誤って次のコマンドを使用して、このsddにddを指定しました。
dd if=/2g-ubuntu.iso of=/dev/sda
3G未満の連続データは物理ディスクの先頭に書き込まれるため、この上書きは2番目のパーティションには達しません。だからすぐにドライブをアンマウントし、読み取りモードでのみマウントしました。 2番目のパーティションのinodeと領域には何も書き込まれなかったため、そのファイルは影響を受けませんでした。
testdiskは、スーパーブロックが破損していることを伝えます。
すべてのバックアップスーパーブロックを読み取ろうとしましたが、そのスーパーブロックも破損しています。
したがって、ファイルを回復するには、inodeとその領域データの読み取りに依存する必要があるようです。
ディスクの適切な部分を指してすべてのファイルを収集できるプログラムはありますか? testdiskを見ましたが、ファイル形式のみを探しているようですが、判断せずにすべてのファイルを見つけるには必要です。
トラブルシューティング - ddを使用して失われたパーティションを見つける
from subprocess import Popen, PIPE
count = 0
skip32Gigs = 0
while 1:
dd_args = ["dd", "if=/dev/sda", "bs=512", "skip=" + str(skip32Gigs+count), "count=4"]
file_args = ['file', "-"]
print 'dd_args', dd_args
dd_process = Popen(dd_args, stdout=PIPE)
file_process = Popen(file_args, stdin=dd_process.stdout, stdout=PIPE)
dd_process.stdout.close()
out, err = file_process.communicate()
print out.split(), err
if "Linux" in out.split():
break
count += 1
XXX