web-dev-qa-db-ja.com

ddrescueがファイルシステムで使用されているブロックを回復できないのはなぜですか?

Ddrescueは、ファイルが含まれていないブロックも含め、ディスクまたはパーティション上のすべてのブロックを回復しようとしているようです。ファイルシステムを調べることで、実際にファイルを保持しているブロックを見つけることはできませんか。 NTFSのマスターファイルテーブル?

編集:パートクローンと組み合わせて使用​​できるようです:

http://partclone.org/features/

レスキュー状況では、Partcloneのレスキューモードは不良ブロックをスキップし、パーティションのすべての良好なブロックをバックアップしようとします。 ddrescueプログラムは、不良ディスクを保存するためのもう1つの優れたソリューションですが、partcloneの助けを借りて、使用されているすべてのブロックをドメインファイルとして一覧表示すると、パーティションをダンプするときにddrescueをよりスマートかつ高速にすることができます。

参照: http://sourceforge.net/p/partclone/mailman/partclone-user/thread/[email protected]/

3
eggbert

簡単な答え:それはその目的ではないからです。 Ddrescueは1つのこと(障害のあるHDDを1:1でコピーする)を実行し、それをうまく実行します。

6
kinokijuf

Ddrescueは、dd自体と同様に、ファイルシステムがないデバイスや破損したデバイスであっても、任意のブロックデバイスで動作することを目的としているため、これが可能であるとは思いません。ファイルシステムが存在するかどうかを調べると、複雑になります。

3
ssmy

古いスレッドですが、他の人に役立つかもしれません...

入力がNTFSフォーマットのボリュームである場合、ddrutilityからddru_ntfsbitmapを使用して、$ Bitmapシステムファイルを使用してddrescueのマップファイルを生成できます。これは、NTFSパーティションで使用済み/未使用のクラスターのマップです。もちろん、正しく機能するには、$ Bitmapファイルが完全に読み取り可能な領域にあり、そのままである必要があります(通常、パーティションの先頭にあります)。その場合、それは迅速に進行します(私の最初の、そしてこれまでの経験では、1TBのパーティションからマップファイルを生成するのに約2分かかりました)。次に、次の基本的なコマンドでddrescueを実行します。

ddrescue [options] [input path] [output path] [logfile] -m [mapfile]

Ddrescueの最近のバージョンでは、「ログファイル」という用語は、回復中に入力ボリュームのレスキューされた/試行されていない/不良領域が保存されるファイルのように、「マップファイル」に置き換えられました。これは非常に混乱します。 。したがって、たとえば、Recovery_bitmap.logというddru_ntfsbitmapによって生成されたマップファイルを使用して、/ dev/sdcというHDDをRecoveryという/ media/sdd1上のイメージにリカバリする場合、コマンドは次のようになります。

ddrescue [options] /dev/sdc /dev/sdd1/Recovery /dev/sdd1/Recovery.log -m /dev/sdd1/Recovery_bitmap.log
2
GabrielB

主な理由は、さまざまなファイルシステムに関する情報を組み込み、それらの内部構造を解析する必要があるため、ddrescueのコードが大幅に複雑になるためと考えられます。

ただし、追加の開発作業を無視しても、一般に、どのブロックにデータがあるかを見つけることは困難です。 ddrescueは通常、データがすでに破損していて、一貫性がない可能性がある状況で使用されます。そのような状況では、使用済みブロックを見つけようとするのは危険です-空きブロックのリスト自体が破損している(ただし、まだ読み取り可能である)場合はどうなりますか?または、ファイルの現在のバージョンは回復できなくなったが、古いバージョンのファイルはまだ空きブロックに存在している可能性があります(ファイルシステムがその場で上書きされなかったため)。

その場合、唯一の安全なオプションは、すべてを取得し、後で詳細を整理することです。

1
sleske

質問で言及されたスレッドが実装されているので、今日それは可能です。 Parcloneユーティリティを使用して、スキャンする必要のある部分を示すファイルを作成できます。

上記のスレッドからの使用方法の例を次に示します。

# produce a domain file for NTFS partition on /dev/sda1
partclone.ntfs -s /dev/sda1 -D -o sda1.domain
# copy /dev/sda1 to /dev/sdb1 using ddrescue with domain log file
ddrescue --domain-log sda1.domain /dev/sda1 /dev/sdb1 rescue.log
0
PhoneixS