web-dev-qa-db-ja.com

壊れたVirtualboxマシン.vdiからファイルを回復する

Virtualboxで実行しているUbuntu 12.04.1は、ソフトウェアをインストールしているときにスペースを使い果たしましたが、現在は 再起動しない です。回復する必要があるファイルがあります。 Windows 7(ホスト)ラップトップにubuntu64.vdiファイルがあり、vdiファイルからファイルを回復する方法があるかどうか疑問に思っていました。

並行して、同じラップトップ内のvirtualboxで新しい12.04.1マシンを生成しました。そして、私は、そのマシンを、壊れたマシンの代わりに使用します。

壊れたvdiを作業中のディスクのリストに追加できます。次に、gnome nautilusを使用して、破損したディスクをマウントしました。

私はそこにファイルを見つけることができますが、それらは約2ヶ月前のものです。これは、マシンのvirtualboxスナップショットを最後に作成したときと一致すると思いますが、昨日、稼働中のマシンを最後に取得したときではありません。昨日、クラッシュする直前にvdiをマウントする方法はありますか?

編集済み:

Virtual Media Managerubuntu64.vdiファイルについて教えてくれるのは次のとおりです。 enter image description here

編集2:

ubuntu.vdiを十分なディスク容量のある外部USBにコピーしました。 Windowsを使用してクローンを作成しようとしましたが、エラーが発生しました。

enter image description here

USBドライブの共有フォルダーを介して、作業中のVMから同じことを試み、クローンを開始しました。しばらくかかりましたが、正常に終了しました:

root@precise64:/media/sf_E_DRIVE/copy_of_ubuntu64_vm_folder_20140224/ubuntu64# 
VBoxManage clonehd ubuntu64.vdi ubuntu64.raw --format RAW
0%...

10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'RAW'. UUID: 90f99198-18e1-40ee-85fe-c083dcbb1ac3

編集3:

生ファイルを作成した後、testdiskDeeper Searchで実行すると、次のようなリストが表示されます。 enter image description here

Ater Deeper Searchが終了すると、次のようなリストが表示されます。

enter image description here

しかし、どのスナップショットがどのスナップショットなのかわかりません...アイデアはありますか?

23
719016

コマンドラインの

Ubuntuをホストとして使用する場合、次のコマンドを使用して.vdiディスクをrawディスクに変換できます。

VBoxManage clonehd <sourcename> <clone.raw> --format RAW

その後、開くことができます testdiskInstall testdisk このファイルを使用して、仮想ドライブのイメージ上のファイルを回復します(以下も参照)。

testdisk <clone.raw>

仮想マシンの

壊れたVDIドライブイメージがVirtual Boxにまだ登録されている場合、このイメージをドライブとして新しい仮想マシンに追加できる場合があります。

enter image description here

壊れた.vdiを追加した仮想Ubuntuを起動しますが、ドライブをマウントしないでください

  1. そこにマウントされたパーティションにディレクトリを作成して、収集されたデータを保持します(例:~/rescued)、

  2. インストール testdiskInstall testdisk 仮想マシン上。

  3. そこからターミナルからtestdiskを開始します。

    Sudo testdisk
    
  4. データをハーベストする適切なドライブを選択し(ここでは/sdbに対して表示)、[Proceed]を選択します

    enter image description here

  5. 適切なパーティションレイアウトを選択します(通常はIntel

  6. [Analyse]-[Quick Search]を選択します

  7. ハーベストするデータを含むパーティションを選択します(ここでは、単一のNTFSパーティションのみが存在しました)。

    enter image description here

  8. 押す P そのパーティのファイルをリストします。

  9. データを含むディレクトリを参照します。ファイル名を表示して、正しいファイルを選択したことを確認してください。

  10. を使用して収穫するディレクトリまたはファイルを選択します : 。選択したすべてのファイル/ディレクトリが緑色でマークされます:

    enter image description here

  11. 大文字を押す C 選択したすべてのディレクトリ/ファイルをレスキューディレクトリにコピーします。レスキューディレクトリは次の手順で選択されます。

  12. Ubuntu VMのマウントされたパーティション上のディレクトリを選択して、レスキューされたデータを保持します。

    enter image description here

  13. 押す c 破損した.vdiから正常なVMのレスキューディレクトリへのデータのコピーを開始します。

ノート:

  • 6。[Quick Search]オプションを使用してファイルを表示できない場合は、[Deeper Search]を実行する必要があります。これにより、以前に削除および上書きされたパーティションもリストされます。そのため、データが存在する適切なパーティションを選択する必要があります。

  • .vdiのsnapshotsを取得した場合、~/.VirtualBox/Machines/<Name of Machine>/Snapshots/{###}.vmdkでこれらを見つけることができますが、Virtual Boxのスナップショット機能を使用するたびにスナップショットは差分ファイルに書き込まれます。

    差分ファイルをハードドライブにマージするには、すべてのスナップショットを削除する必要があります(データリカバリを呼び出すのではなく、以前のスナップショットに復元できるため、おそらく必要ではありません)。または、次を使用してマシンのドライブを複製する必要があります

    VBoxManage clonehd <name_of_source> <clone>
    

    次に、上記のように、クローンをレスキューVMにバインドします。

  • 破損した.vdiへの書き込みは、データが安全になった後にのみ行う必要があります。これにより、ファイルシステムがさらに破損する可能性があります。

  • 私たちのレスキューUbuntuがレスキューされたデータを保持するには小さすぎる場合、VMにバインドする別の新しい仮想ドライブを作成できます。次に、このディスクをVMにマウントして、そこにテストディスクからデータを保存できるようにする必要があります。

21
Takkat

1)UUIDでスナップショットの回復を試み、次のハックを使用します。

  • 回復する状態のUUIDを選択します。
  • XMLファイルの簡単なナビゲーションを可能にするツール(Internet Explorerが機能する)でファイル.xmlを開きます。
  • 非常に下の[ストレージコントローラー]セクションで、現在の状態のUUIDを見つけ、StorageControllerのname =、type =、およびAttachedDevice type =、port =、およびdevice =の設定を確認します。
  • 中央で、必要なスナップショットを見つけます。
  • スナップショットの[ストレージコントローラー]セクションで、上記で取得した値と一致する値(名前/タイプ/タイプ/ポート/デバイス)を持つAttachedDeviceを見つけます。
  • そのイメージUUIDは、ハードディスクのスナップショットイメージを識別します。 {}ブラケットを削除し、

コマンドC:> VBoxManage clonehd <UUID> CloneDisk.vdiを入力します

それが役立つことを願っています、私はここで解決策を見つけました:( https://forums.virtualbox.org/viewtopic.php?t=791

2)1)の手順が機能しない場合は、別の手順を試してみてください。ディスクの現在の状態を複製する方法:

  • 仮想メディアマネージャーを開きます(メニュー:ファイル>仮想メディアマネージャー)。
  • クローンを作成するハードディスクに移動し、ツリーを完全に展開します(テンキーの*キーを使用します)。
  • 現在の状態を複製するVMに接続されている{hexUUID} .vdiファイルを見つけます。ブランチの最後のリーフファイル(の1つ)になります。選択すると、ウィンドウの下部にある「添付先:」テキストに「添付先:」と表示され、その後に括弧で囲まれた(スナップショット名)はありません。
  • ウィンドウの下部に表示される「場所:」の右側にあるファイル名をクリックします。
  • Ctrl + C /コピーしてテキストをクリップボードにコピーします。(パス){b6441469-5ccb-418c-8fdd-73c5e1a17314} .vdiのようになります。
  • Ctrl + V/hexUUID値を貼り付けて抽出し({}括弧を削除)、clonehdを実行してクローンを作成します。

この解決策はこちらから:( http://www.i-m-code.com/blog/blog/2012/02/04/virtualbox-clone-snapshots/ )どちらもほぼ同じことを言っています。

5
Dee

Linuxシステムが/および fsckで修正できませんでした で破損していました。次の簡単なアプローチを使用しました。

  1. 新しい交換用VDIをマシンに追加します。
  2. 新しいLinux ISOをダウンロードします。
  3. (1)で追加したディスクに新しいLinuxをブートしてインストールします。
  4. 新しいシステムにディスクをマウントし、必要なファイルをコピーします。通常、これは/home/user/フォルダーをコピーすることを意味します。隠しファイル(設定ファイル)を忘れずにコピーしてください。

私にとってはうまくいきました。ディスクの破損は起動の妨げになるだけで、ホームフォルダーのデータは失われませんでした。

1
Deleet