
誤ってすべての内容を削除したため、ddrescueを使用して1TB外付けドライブからデータを回復しようとしています。実際、私はここに掲載されたのと同じ状況に直面しなければなりませんでした。ddrescueディスクイメージを分割して再利用するには?しかしその点では質問、最初の部分はこれが私の質問のすべてです。まだ答えがありません。フォーラムを読んでいる間、私の状況と他のガイドだけが見つかりました。つまり、同じ場所に復元し、最初のドライブとまったく同じ記憶容量を持つ別のドライブに復元し、複数のパーティションを最初のドライブよりも大きな容量に復元します。
だから私の質問は、1TBの外付けHDDからデータを救出する必要があるということです。そのために、約935GB(GiBではない)の空き容量がある外付けHDDがあり、私のラップトップのWindowsパーティション(現在空白)には約222GBの空き容量があります。私は次のことをしました:ddrescueを起動しました
/# ddrescue -n -s900GB /dev/sdc /media/misi/Maxtor/recovery/recovery_part1.img /home/misi/recovery_log.txt
最初の900 GBのみ外付けドライブに保存してください。すべてがうまく行われ、次のような結果が出ました。
GNU ddrescue 1.17
Press Ctrl-C to interrupt
rescued: 900000 MB, errsize: 0 B, current rate: 64104 kB/s
ipos: 899999 MB, errors: 0, average rate: 38981 kB/s
opos: 899999 MB, time since last successful read: 0 s
Finished
次に、残りの部分をWindowsパーティションに保存します。
/# ddrescue -n /dev/sdc /windows/recovery_part2.img /home/misi/recovery_log.txt
しかし、うまくいきません。
GNU ddrescue 1.17
Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued: 900000 MB, errsize: 0 B, errors: 0
Current status
rescued: 900000 MB, errsize: 0 B, current rate: 0 B/s
ipos: 900000 MB, errors: 0, average rate: 0 B/s
opos: 900000 MB, time since last successful read: 3 s
Copying non-tried blocks...
ddrescue: write error: Invalid argument
ただし、上記の質問とその他のガイドとマニュアルページに従う必要があります。引き続き別の外付けハードドライブにファイルを保存でき、Windowsパーティションの分割プロセス全体を再開することもできました。 Windowsパーティションに問題があるかどうかをテストしたかったので、両方のプロセスを中断しました。また、別のログファイルを使用し、最初のログファイルで検索する開始位置を手動で指定してみました(前述のように、数秒間続行してから少し変更されました)。
/# ddrescue -n -i900862115840 -o900862115840 /dev/sdc /windows/recovery_part2.img /home/misi/recovery_log_2.txt
Invalid argument
前述のものと同じエラーメッセージを受け取りました。私が何を間違っているのでしょうか?データの最大部分を別の外部ドライブに保存し、残りの部分を私のWindowsパーティションに保存する正しいパターンは何ですか?事前にお答えいただきありがとうございます!
答え1
私はddrescue
それがこのように動作するように設計されたことがないと思います。あなたが間違ったことを分析することは意味がありません。なぜなら、正しい方法は実際にあるからです。この回答あなたが述べた質問に。特にUnixの「すべてはファイルだ」という概念に慣れていない人にとっては、この文脈でこの単語の使用が明確ではないかもしれないことを認めます。
回答では、2つのファイルを1つの仮想デバイス(特殊ファイル)a
に接続する方法について説明します。b
/dev/mapper/merge
2つのファイルを作成a
しb
(実行方法を見る)利用可能な2つのファイルシステムに含まれているため、結合されたサイズが/dev/sdc
。
リンクされた回答の次のスニペットを適用します(正しいパスa
とb
)。
losetup /dev/loop1 a losetup /dev/loop2 b s() { blockdev --getsize "$1"; } dmsetup create merge << EOF 0 $(s /dev/loop1) linear /dev/loop1 0 $(s /dev/loop1) $(s /dev/loop2) linear /dev/loop2 0 EOF
その後、通話中に/dev/mapper/merge
代わりに使用します。recovery_part1.img
ddrescue
の内容は/dev/mapper/merge
基本的にの出力と同じですcat /your/path/to/a /your/different/path/to/b
が、merge
書き込みおよび検索が可能です。
注:/dev/mapper/merge
再起動後も保持されませんが、ファイルはa
もちろんb
。/dev/mapper/merge
再起動後に使用するには、上記のコードを使用して再生成するだけです。
答え2
編集:正しく機能しません。
-i200Gib
-s200Mib
非常に高速で200Gファイルを生成するように設定します。明らかに私はまだこれらのパラメータを理解していないので、以下で言うすべての内容を無視することをお勧めします。私のせい。またドラフトに戻ります。問題が解決したら、いくつかのテストを行って更新します。
私にとってはうまくいきます。-i
初期位置を示すために使用し、-s
停止位置を示すために使用します。現在破損している4TB WD「MyPassport」ポータブルドライブを扱っています。一度に200GiB、その後使用写真記録各200GiBイメージからファイルを抽出します。オンラインアルゴリズムセクションの最後に提供されている例に従います。アドレス構造マニュアル
次の理由で出力をチャンクします。
- 4TBのイメージ全体を保存するスペースがサーバーアレイに十分ではありません。
- 待たずにファイルを回復していると確信していました。年齢全体のために救うファイルを復元する前に解析を完了してください)
ポリスチレン写真記録画像全体からファイルを抽出できると思いました(最後を参照)。このセクションの)疑問符をワイルドカードとして使用しましたが、まだ確認していません。
頑張ってください!