ddrescue を使用して Linux 上のデータを回復する

Ddrescue Wo Shi Yongshite Linux Shangnodetawo Hui Fusuru



ddrescue は、ハード ドライブ、SSD、RAM ディスク、CD、DVD、USB ストレージ デバイスなどのファイルまたはブロック デバイスからデータを回復するために使用されるツールです。あるブロック デバイスから別のブロック デバイスにデータをコピーし、破損したデータ ブロックを残し、正常なデータ ブロックのみを移動します。 ddrescue は、回復操作中に干渉を必要としないため、完全に自動化された強力な回復ツールです。さらに、いつでも停止および再開できます。 ddrescue マップ ファイル 。 ddrescue のその他の主な機能を以下に示します。
  • 回復されたデータは上書きされませんが、反復回復の場合にギャップが埋められます。ただし、ツールに明示的に指示されている場合は切り詰めることができます。
  • 複数のファイルまたはブロックから単一のファイルにデータを復元します。
  • SATA、ATA、SCSI、MFM ドライブ、フロッピー ディスク、SD カードなど、複数の種類のデバイス インターフェイスをサポートします。

このガイドでは、この非常に便利なデータ回復ツールについて説明します。また、そのインストールプロセスと、それを使用してブロックデバイスまたはパーティションを回復する方法についても説明します。

注記: このガイドの手順では Linux ディストリビューション (Ubuntu 22.04) を使用しています。 ddrescue ユーティリティのインストール プロセスは異なる場合がありますが、手順はすべての Linux ディストリビューションで同じです。







drescueのインストール

Linux に ddrescue をインストールするには、特に Ubuntu そしてその味、あるいは Debian ベース ディストリビューションの場合は、以下を使用します。



須藤 適切な インストール gdレスキュー

インストールするには レール フェドーラ 、 そして CentOS 、最初に有効にします 暖かい (Enterprise Linux 用の追加パッケージ)。



須藤 ヤムインストール ウォームリリース

上記のコマンドは、それぞれのディストリビューションの新しいバージョン用です。





次に、次のコマンドを実行して ddrescue をインストールします。

須藤 ヤムインストール アドレスキュー

Arch ベースの Linux ディストリビューションの場合 Arch-Linux そして マンジャロ 、以下のコマンドを使用して、ddrescue 回復ユーティリティをインストールします。



須藤 パックマン -S アドレスキュー

私はUbuntu 22.04を使用しているので、APTパッケージマネージャーを使用してインストールします。

基本を理解する

ddrescue ツールを使用してデータを回復する前に、回復プロセスを初めて使用するユーザーには、Linux のいくつかの命名規則を理解しておくことをお勧めします。

Linux はブロック (デバイス) をファイルとして認識し、 /dev ディレクトリ。 /dev ディレクトリ内のファイルを一覧表示するには、 ls /dev 指示。

ハードドライブ (ストレージブロック) は次のように表されます。 SD その後にアルファベットが続きます。複数のストレージデバイスの場合、ファイルは /dev/sd として表されます。 ああ、 /dev/sd b、 等々。

ストレージデバイスに パーティション の場合、/dev/sda のように、それぞれのドライブ ファイル名を伴う番号で表されます。 1 、/dev/sda 2 、 等々。

すべてのブロックおよびシステムに接続されているその他のデバイスをリストするには、リスト ブロックを使用します。 lsblk 指示:

lsblk

ddrescue コマンドは、ブロック全体 (MBR とパーティションを含む) またはパーティションを復元することもできます。一方、特定のパーティションから特定のファイルのみを復元する必要がある場合は、ブロック全体ではなくパーティションを復元することをお勧めします。

重要な考慮事項

ddrescue ユーティリティを使用する前に、いくつかの重要な点を考慮する必要があります。

  • マウントされたブロックを回復しようとしないでください。ブロックは読み取り専用モードであってはなりません。
  • I/O エラーのあるブロックを修復しようとしないでください。
  • システムは再起動時に入力および出力デバイス名を変更できます。コピープロセスを開始する前に、デバイス名が正しいことを確認してください。
  • 別のブロックを出力デバイスとして使用している場合、デバイス上のデータはすべて上書きされます。

drescueの使用

ddrescue ユーティリティをインストールし、命名規則を理解したら、次のステップは、障害のあるディスクを特定し、ddrescue ツールを使用して回復することです。

破損したブロックの回復

最初の例には、ブロック全体を回復するプロセスが含まれます。まず、次を使用してブロックをリストします。 lsblk 指示:

lsblk -O 名前、サイズ、FSタイプ

-O flag は、コマンドが出力する情報 (フィールド) の種類を指定するために使用されます。について言及しました 名前 サイズ 、 そして FSタイプ またはファイルシステムのタイプ。

これで、ターゲットのブロック、パーティション、およびレスキューされたイメージ ファイルを保存する場所を特定できます。

もう 1 つ注意すべき重要な点は、Linux ではブロック名が起動時に動的に割り当てられ、再起動後にブロックの名前が変更される可能性があることです。したがって、ブロック名を書き留めるときは注意してください。

ここで、次の構文を使用して、ルート ディレクトリにログ ファイルを含むイメージ ファイルとしてブロックを救出します。

須藤 アドレスキュー -d -処方箋 / 開発者 / [ ブロック [ パス / 名前 .img [ ログファイル名 。ログ

注記: 交換する [ブロック] [パス/名前] 画像ファイルの、そして [ログファイル名] それに応じて優先される名前が付けられます。

この例では、 /dev/sda ルートディレクトリにイメージファイル名を付けて保存します。 回復.img 。マップ ファイルとも呼ばれるログ ファイルは、いつでもリカバリを再開する場合に不可欠です。

須藤 アドレスキュー -d -r2 / 開発者 / sda2 リカバリ.img リカバリ.ログ

上記のコマンドでは 2 つの重要なフラグが使用されています。

d –間接的 カーネル キャッシュを無視してディスクに直接アクセスするようにツールに指示するために使用されます。
処方箋 –再試行パス 不良セクタを X 回再試行するようにツールに指示するために使用されます

上記のコマンドを実行すると、次の名前の 2 つのファイルがファイル ブラウザに表示されることがわかります。 回復.img そして リカバリ.ログ

回復にかかる時間は、入力ブロックのサイズと損傷によって異なります。大きなブロックを回復する場合は、プロセスが完了するまでに数時間、場合によっては数日かかる場合があるため、ログ ファイルを作成することをお勧めします。

上記のコマンドの出力は次のとおりです。

出力画像では、 イポス はコピーが開始される入力ファイルの入力位置です。 潰瘍 データが書き込まれる出力ファイル上の出力位置です。

試していない 試行が保留されていないブロックのサイズです。の 救出された 正常に回復されたブロックのサイズを示します。の 救出された割合 データのリカバリが成功したことをパーセンテージで示します。条件は、 トリミングされていない スクラップされていない 不良セクタ 、 そして 悪い地域 説明の必要はありません。しかし 読み取りエラー この用語は、失敗した読み取り試行を数値で示します。

実行時間 はツールがプロセスを完了するまでにかかった時間を示し、 残り時間 回復プロセスを完了するまでの残り時間です。上記の出力では、プロセスが終了したため残り時間が 0 になっています。次の未完了のプロセスの画像の出力を読んでください。

ログ ファイルに何が表示されるかを見てみましょう。生成されたログ ファイルを開くには、 vim リカバリ.ログ 指示。

現在のステータス + はプロセスが終了したことを意味します。 現在の位置 ブロック上の位置です。

現在のステータスのリストを次の表に示します。

? コピーする
* トリミング
/ 廃棄
再試行中
F 指定されたブロックを埋める
G ログファイルの生成
+ プロセスが完了しました

この下に、ログ ファイルには、以前にレスキューされたブロックのステータスが、以下にリストされている文字の形式で表示されます。

? ブロックは未試行です
* トリミングされていない失敗したブロック
/ 廃棄されていない失敗したブロック
不良セクタ障害ブロック
+ 完成したブロック

画像ファイルを新しいブロックに復元する

リカバリプロセスが完了し、イメージファイルが作成されたら。破損したドライブから新しいドライブに移動したい場合があります。イメージ ファイルを新しいブロックに移動するには、まずそのブロックをシステムに接続し、次に、 lsblk 指示。

そうだと仮定しましょう /dev/sdb 、次のコマンドを使用して、イメージを新しいブロックにコピーします。

須藤 アドレスキュー -f 回復.img / 開発者 / sdb ログファイル.log

-f データがある場合、フラグは新しいブロックを上書きするために使用されます。ログ ファイルの名前は、以前に保存されたログ ファイルとは別の名前にする必要があることに注意してください。

上記の操作は、 DD 、ファイルをコピーするために使用されるもう 1 つの強力なコマンドです。

須藤 DD もし =回復.img = / 開発者 / SDB

復元を行う前に、新しいブロックは復元されたブロック全体を保持できる十分な大きさでなければならないことに留意してください。たとえば、回復ブロックが 5GB の場合、新しいブロックは 5GB より大きくなければなりません。

回復されたイメージ ファイルで多くのエラーが表示される場合は、次のコマンドを使用してエラーを修復できます。 fsck Linux ではある程度コマンドを実行できます。 Windows では、次の機能を利用できます。 CHKDSK または SFC これを行うためのコマンド。ただし、回復できるかどうかは、破損したファイルによって生成されたエラーの数によって異なります。

これで、回復プロセスと復元が完了しました。もう 1 つ注意すべき重要な点は、イメージ ファイルを作成して新しいブロックにコピーする代わりに、破損したブロックを別のブロックで直接回復できることです。次のセクションで、このプロセスについて詳しく説明します。

ブロックを別のブロックに復元する

ブロックを新しいブロックに直接リカバリするには、まずブロックをシステムに接続し、再度使用します。 lsblk ブロック名を識別するコマンド。ブロック名が間違っていると、プロセス全体が混乱し、データが失われる可能性があります。

ソース ブロックと宛先ブロックを特定したら、次のコマンドを使用してブロックを回復します。

須藤 アドレスキュー -d -f -r2 / 開発者 / [ ソース / 開発者 / [ 行き先 バックアップ.ログ

仮定してみましょう /dev/sdb は宛先ブロックなので、コピーするには /dev/sda 新しいブロックへのディレクトリは以下を使用します。

須藤 アドレスキュー -d -f -r2 / 開発者 / sda / 開発者 / sdbバックアップ.ログ

このプロセスを試す前に、前のセクションで説明した重要な考慮事項を再度確認してください。

回復されたイメージファイルから特定のデータを回復する

多くの場合、データ回復の目的は、破損したドライブから特定のファイルを見つけることです。特定のファイルにアクセスするには、イメージ ファイルをマウントする必要があります。 Linux では、回復されたイメージ ファイルは、 マウント 指示。

イメージ ファイルをマウントする前に、イメージ ファイルの内容を抽出するフォルダーまたはディレクトリを作成します。

mkdir リカバリマウント

次に、次を使用してイメージ ファイルをマウントします。

須藤 マウント -O ループ回復.img ~ / リカバリマウント

-o フラグはオプションを示し、loop オプションはイメージ ファイルをブロック デバイスとして扱うために使用されます。

次のスクリーンショットに示すように、画像ファイルのコンテンツにアクセスできるようになりました。

ブロックをアンマウントするには、 アンマウント 指示。

須藤 アンマウント / リカバリマウント

高度な機能

特定の時点からリカバリを開始するには、 -私 旗か –入力位置 。バイト単位である必要があります。デフォルトでは、 0 バイト。これは、特定のポイントからコピーを再開するために重要です。たとえば、10 GB ポイントからコピー プロセスを開始する場合は、次のコマンドを使用します。

須藤 アドレスキュー -i10GiB / 開発者 / sda イメージファイル.img ログファイル.log

入力デバイスの最大サイズを定義するには、 -s フラグが使用されます。の -s サイズを意味し、次のようにも使用できます。 -サイズ バイト単位で。ツールが入力ファイルのサイズを認識できない場合は、このオプションを使用してサイズを指定します。

須藤 アドレスキュー -s10GiB / 開発者 / sda イメージファイル.img ログファイル.log

-聞く このオプションは、コピー プロセスを開始する前に入力ブロックと出力ブロックの確認を求めるプロンプトを表示するため、非常に便利です。前に説明したように、システムはブロックに名前を動的に割り当て、それらは再起動時に変更されます。したがって、その場合、このオプションは便利です。

須藤 アドレスキュー - 聞く / 開発者 / sda イメージファイル.img ログファイル.log

さらに、その他のオプションのリストを以下に示します。

-R -逆行する コピー方向を逆にするには
-q -とても すべての出力メッセージを抑制するには
-で –冗長 さらに詳しく説明すると、すべての出力メッセージは
-p –事前割り当て 出力ファイル用にストレージを事前に割り当てるには
-P –データプレビュー 読み込んだ最新データの表示行数はデフォルトで3行です

drescueの仕組み

ddrescue は、4 つのフェーズに分かれた強力な回復アルゴリズムを使用します。

1. コピーする

2. トリミング

3. スクレイピング

4. リトライ

ddrescue アルゴリズムの実行を次の図に示します。

結論

アドレスキュー は、データをコピーすることで、破損したドライブまたは故障したドライブから別のドライブにデータを回復するために使用される強力な回復ツールです。デフォルトのパッケージ マネージャーを使用して、任意の Linux ディストリビューションに簡単にインストールできます。このガイドで説明されているこのツールを使用する前に、重要な考慮事項に注意してください。データをコピーするプロセスは簡単です。ドライブをアンマウントし、コピー元のドライブ名とコピー先のドライブ名を指定して ddrescue コマンドを使用します。ログ ファイルは回復プロセスを再開する際に非常に役立つため、忘れずに使用してください。