数日前、180GB のパーティションで ddrescue を実行しましたが、3 日後 (最後に確認したときは 99.91 % の復旧でフェーズ 3 でした) にシステムがフリーズしたため、オフ ボタンを押し続け、コンピューターの電源をオフにしました。
電源を入れた時に、イメージファイルとログファイルのバックアップを取ったのですが、ログファイルは完全にコピーされず、コピー時にエラーが発生したと表示されましたが、106 kb のうち 104 kb がログファイルからコピーされました (奇妙なことです)。
そして、ddrescue コマンドを再度実行すると、「マップファイル discoC.Logfile、行 4092 にエラーがあります」というメッセージが表示されます。
指示:
sudo ddrescue -d -r0 /dev/sdb3 discoC.img discoC.Logfile
これは私のPasteBin のログファイルが不完全です4092 行目が最後の行です。これはログ ファイルの一部です。
# Mapfile. Created by GNU ddrescue version 1.23
# Command line: ddrescue -d -r0 /dev/sdb3 discoC.img discoC.Logfile
# Start time: 2021-12-15 01:56:33
# Current time: 2021-12-18 20:11:51
# Scraping failed blocks... (forwards)
# current_pos current_status current_pass
0xC5A65E00 / 1
# pos size status
0x00000000 0x00003400 -
0x00003400 0x00000200 +
0x00003600 0x00000800 -
0x00003E00 0x00000800 +
0x00004600 0x00000200 -
0x00004800 0x00000200 +
0x00004A00 0x00000400 -
....... (Lot of - and +)........
0xC564C600 0x00000400 +
0xC564CA00 0x00000600 -
0xC564D000 0x00000200 +
0xC564D200 0x00000200 -
0xC564D400 0x00000800 +
0xC564DC00 0x00000400 -
0xC564E000 0x00000600 +
0xC564E600 0x00000200 -
0xC564E800 0x00001A00 +
0xC5650200 0x00000200 -
0xC5650400 0x00000E00 +
0xC5651200 0x00000200 -
0xC
そこからプロセスを続行できるようにお手伝いいただけますか?
答え1
によるとhttps://www.electric-spoon.com/doc/gddrescue/html/Mapfile-structure.htmlマップファイル (ログファイル) は、テキスト エディターで簡単に解釈および編集できます。
私なら、そのコピーを作成して 4091 行目と 4092 行目を削除し、ddrescue が最後にログに記録したポイントから再開できるようになると思います。
確かに、かなり失敗しているようです。最後から逆順に実行すると (つまり、-R スイッチを追加すると)、より速く大量のデータをキャプチャできるのではないかと思います。 (これを試しても害はありません)。
答え2
質問をこんなに遅く読んでしまい申し訳ありません。
欠落している行 4092 に対して有効なものを復元するのは簡単です。
0xC5651400 <remaining-size> ?
どこ:
0xC5651400
0xC5651200
は、4091 行目の前のチャンクの開始位置とそのブロック チャンクのサイズを合計して得られる、新しいブロック チャンクの開始です0x00000200
。?
つまり、 から始まるブロックは0xC5651400
まだ試行されていないため、それらのブロックに対してクローン作成を試行する必要があります。<remaining size>
: 以下を参照してください。
の値を計算する方法<remaining size>
:
- ログファイルに4093行目がある場合: 4093行目の開始オフセットと4092行目に記載されている計算された開始オフセット(つまり
0xC5651400
)の差を16進数で表します。 - または、行 4093 がない場合:
dev/sdb3
パーティションのサイズと行 4092 の開始オフセットの差 (つまり0xC5651400
)。
パーティションのサイズはdev/sdb3
、次のようなターミナル コマンドを使用するfdisk -l
か、別のイメージ ファイルへのクローン作成プロセスを開始して、ログ ファイルなしで別のログ ファイルを作成することによって知ることができます。ddrescue は、「N バイトをコピーしようとしています」などのメッセージを表示します。セクター サイズ (例: 512) で除算して 16 進数に変換する必要がある場合があります。