testdisk とディスクの再アタッチを使用して、Linux Elastic Compute Service (ECS) インスタンスで誤って削除したファイルを復元します。
背景情報
本トピックで紹介するワークフローとツールは、誤って削除したファイルの復元に役立ちます。復元結果は、シナリオと方法によって異なります。実際の状況に合わせて、適切な対策を選択してください。
前提条件
-
ワークフロー セクションを読んでいること。
-
データをさらに破損させることなく、データを復元できる知識とスキルがあること。
-
誤操作による破損を防ぐため、復元対象のディスクのスナップショットを作成済みであること。
-
本トピックでは、データ復元にサードパーティのオープンソースソフトウェアを使用します。Alibaba Cloud は、サードパーティソフトウェアの復元結果を保証しません。
-
データが重要で、データ復元の専門知識がない場合は、手動でデータを復元するのではなく、専門のデータ復元業者にお問い合わせください。
ワークフロー
誤削除後にシステムを起動できない場合のデータ復元
Linux インスタンスで root ユーザーとして rm -rf /* を実行し、再起動後に grub CLI が表示された場合は、このワークフローに従ってソースシステムディスクからデータを復元してください。
システムファイルの誤削除後のデータ復元
Linux インスタンスで rm -rf <file_or_dir> を実行し、削除されたデータを復元する必要がある場合は、このワークフローに従ってください。
削除が原因で SSH 接続に失敗した場合、VNC (VNC) を使用してインスタンスに接続してください。
操作ガイド
次の例では、誤削除後にインスタンスを起動できない場合に、testdisk を使用してデータを復元する方法を示します。
ユースケース
-
誤って
rm -rf /*を実行してしまい、インスタンスが起動できなくなります。 -
削除前にスナップショットを作成していない、または復元にスナップショットを使用したくない場合。
-
別の Linux インスタンスを使用してデータを復元したい場合。
操作フローチャート
次のフローチャートは、データ復元の手順を示しています。
操作手順
-
現在のインスタンスのスナップショットの作成
データを復元する前に、ターゲットインスタンスのシステムディスクまたはデータディスクのスナップショットを作成し、既存データをバックアップします。詳細については、「ディスクのスナップショット作成」をご参照ください。
-
ソースインスタンスからのディスクのデタッチと別インスタンスへのアタッチ
警告システムディスクをデタッチする前に、ECS コンソールで 強制停止 を選択してインスタンスを停止してください。そうしないと、システムディスクはデタッチできません。

システムディスクまたはデータディスクをデタッチし、正常に動作している別の Linux インスタンスにアタッチします。詳細については、「システムディスクのデタッチまたはアタッチ」をご参照ください。
警告ソースシステムディスクを別のインスタンスにデータディスクとしてアタッチすると、ECS コンソールでディスクの初期化を求めるプロンプトが表示されることがあります。 絶対に [今すぐ初期化] を選択しないでください。 ダイアログボックスを閉じて、続行してください。 そうしないと、復元するデータが破損します。

-
誤って削除したデータの復元
testdisk を使用して、削除されたデータまたはディレクトリを復元します。次の例では、Linux インスタンスで削除されたディレクトリを復元します。
-
正常に動作しているインスタンスに testdisk をインストールします。コマンドはオペレーティングシステムによって異なります。
Alibaba Cloud Linux 2 または 3
sudo yum install -y testdiskCentOS 6、CentOS 7、または CentOS 8
sudo yum install -y testdiskUbuntu または Debian
sudo apt install -y testdisk -
現在のディスクパーティションを確認します:
sudo fdisk -lu出力例:
Disk /dev/vda: 145 GiB, 155692564480 bytes, 304087040 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: F51132A7-67B1-4650-806D-FD0DE6E1210C Device Start End Sectors Size Type /dev/vda1 2048 6143 4096 2 M BIOS boot /dev/vda2 6144 415743 409600 200 M EFI System /dev/vda3 415744 304087006 303671263 144.8 G Linux filesystem Disk /dev/vdb: 40 GiB, 42949672960 bytes, 83886080 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: F51132A7-67B1-4650-806D-FD0DE6E1210C Device Start End Sectors Size Type /dev/vdb1 2048 6143 4096 2 M BIOS boot /dev/vdb2 6144 415743 409600 200 M EFI System /dev/vdb3 415744 83886046 83470303 39.8 G Linux filesystemこの例では、
/dev/vdaは通常のインスタンスのシステムディスクです。/dev/vdbは、データディスクとしてアタッチされたソースインスタンスのシステムディスクです。 -
対象のディスクで
testdiskを実行します:sudo testdisk /dev/vdbProceed(デフォルト) を選択し、[Enter] キーを押します。
-
パーティションテーブルのスタイルを選択します。デフォルトは [Intel] です。ディスクが GUID パーティションテーブル (
GPT) を使用する場合は、[EFI GPT] を選択します。[Enter] を押します。
-
[分析]を選択し、[Enter] を押してディスクをスキャンします。

-
パーティション情報が表示されない場合は、[クイック検索] を選択し、[Enter] を押してください。

パーティション情報が表示されたら、目的のパーティションを選択し、[Enter] を押します。

-
[詳細検索]を選択し、[Enter] を押します。

-
回復可能なファイルが表示されたら、[続行] を選択し、[Enter] を押します。

[P] キーを押すと、ファイルが一覧表示されます。

指定したファイルとフォルダーの復元
復元するファイルを選択して、[c] を押します。

すべてのファイルの復元
[a] を押してすべてのファイルを選択し、[C] を押してコピーします。

-
宛先ディレクトリを選択し、[C] を押してファイルを貼り付けます。 この例では、ファイルは /home/ecs-user/data_recovery に復元されます。

Copy done! 10 ok, 0 failedのようなメッセージは、ファイルがコピーされたことを示します。
-
インスタンスに再接続し、/home/ecs-user/data_recoveryに移動します。 ディレクトリにファイルが表示されていれば、復元は成功です。

-
関連ドキュメント
-
詳細については、「ディスクのスナップショット作成」をご参照ください。
-
詳細については、「システムディスクのデタッチまたはアタッチ」をご参照ください。
-
詳細については、「システムディスクの再初期化 (OS のリセット)」をご参照ください。
-
詳細については、「スナップショットからのディスク作成」をご参照ください。
-
詳細については、「VNC を使用した接続」をご参照ください。
-
詳細については、「Workbench を使用した SSH 経由での Linux インスタンスへのログイン」をご参照ください。
-
詳細については、「Linux でのデータ復元ツール」をご参照ください。