Pulihkan file dari mesin Virtualbox yang rusak .vdi

23

Ubuntu 12.04.1 saya berjalan di virtualbox kehabisan ruang ketika saya menginstal perangkat lunak di atasnya dan sekarang tidak me-reboot . Saya punya file yang harus saya pulihkan. Saya memiliki ubuntu64.vdifile di laptop Windows 7 (host) saya dan saya bertanya-tanya apakah ada cara untuk memulihkan file dari file vdi.

Secara paralel, saya menghasilkan mesin 12.04.1 baru di virtualbox di laptop yang sama, dan saya akan menggunakan yang bukan borked.

Saya dapat menambahkan borked vdike daftar disk di yang berfungsi. Lalu saya menggunakan gnome nautilus untuk memasang disk ber-bork.

Saya dapat menemukan file di sana, tetapi mereka berusia sekitar 2 bulan. Saya pikir ini bertepatan dengan terakhir kali saya melakukan snapshot virtualbox dari mesin, tetapi bukan terakhir kali saya mendapatkan mesin yang berfungsi, yang kemarin. Apakah ada cara untuk memasang vdikemarin, tepat sebelum crash?

Diedit:

Inilah yang Virtual Media Managermemberi tahu saya tentang ubuntu64.vdifile saya : masukkan deskripsi gambar di sini

EDITED2:

Saya menyalin saya ubuntu.vdike USB eksternal dengan banyak ruang disk. Saya mencoba menggunakan Windows untuk mengkloningnya, tetapi mendapat kesalahan:

masukkan deskripsi gambar di sini

Saya mencoba hal yang sama dari VM yang berfungsi melalui folder bersama drive USB, dan memulai kloning. Butuh beberapa saat, tetapi selesai dengan sukses:

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

EDITED3:

Setelah membuat file mentah, saya jalankan testdiskdengan Deeper Search, saya mendapatkan daftar seperti ini: masukkan deskripsi gambar di sini

Ater Deeper Searchtelah selesai, saya mendapatkan daftar seperti ini:

masukkan deskripsi gambar di sini

Tapi saya tidak tahu snapshot mana yang ... Ada ide?

719016
sumber
@ Takkat, kedengarannya keren. Bagaimana saya bisa melakukan itu?
719016
@ Takkat, saya melakukannya dan memasangnya menggunakan gnome nautilus, tapi saya percaya itu terpasang versi mesin yang berumur dua bulan.
719016
2
Masalahnya di sini bukanlah bagaimana memulihkan disk tetapi bagaimana melakukannya bergabung dengan snapshot. Jika Anda mencoba untuk mengkloning vdi Anda itu akan memiliki uuid lain dan snapshot tidak akan bekerja dengannya dan Anda akan kehilangan data terbaru. Saya tidak menggunakan snapshot secara teratur karena saya memiliki disk yang rusak di masa lalu dan saya dapat memulihkan disk dasar tetapi selalu kehilangan delta. Saya harap seseorang di sini memberikan resep yang baik untuk memulihkan basis dan delta.
Pablo Marin-Garcia
1
Ini untuk waktu berikutnya: jangan pernah menyimpan data di mesin virtual, selalu pasang drive eksternal ... atau buat cadangan / sinkronisasi sering melalui rsync.
Dee
1
Cobalah untuk mengkloning snapshot terbaru, bukan disk asli. Anda harus menggunakan Vboxmanage clonehd 2208...(salin UUID terbaru di sini). Lihat serverfault.com/a/506581/195528
Rmano

Jawaban:

21

Dari baris perintah

Jika kita menggunakan Ubuntu sebagai tuan rumah, kita dapat mengubah disk .vdi menjadi disk mentah dengan perintah berikut:

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

Kami kemudian dapat membuka testdisk Instal testdisk dengan file ini untuk memulihkan file pada gambar drive virtual (juga lihat di bawah):

testdisk <clone.raw>

Dari mesin virtual

Jika image drive VDI yang rusak masih terdaftar di Virtual Box, kami mungkin dapat menambahkan gambar ini sebagai drive ke mesin virtual baru kami:

masukkan deskripsi gambar di sini

Mulai Ubuntu virtual Anda yang telah kami tambahkan .vdi yang rusak tetapi jangan memasang drive .

  1. Buat direktori pada partisi yang terpasang di sana untuk menampung data yang dipanen (mis. ~/rescued),

  2. Instal testdisk Instal testdisk di mesin virtual.

  3. Mulai testdisk dari terminal di sana:

    sudo testdisk
    
  4. Pilih drive yang sesuai untuk mengambil data dari (ditampilkan di sini untuk /sdb) dan pilih[Proceed]

    masukkan deskripsi gambar di sini

  5. Pilih tata letak partisi yang sesuai (biasanya Intel)

  6. Pilih [Analyse]-[Quick Search]

  7. Pilih partisi yang berisi data untuk dipanen (di sini hanya ada satu partisi NTFS):

    masukkan deskripsi gambar di sini

  8. Tekan P untuk mendaftar file pada partiton itu.

  9. Telusuri ke direktori yang berisi data. Lihat nama file untuk memastikan Anda memang memilih yang benar.

  10. Pilih direktori atau file yang akan dipanen dengan menggunakan : . Semua file / direktori yang dipilih akan ditandai hijau:

    masukkan deskripsi gambar di sini

  11. Tekan huruf besar C untuk menyalin semua direktori / file yang dipilih ke direktori penyelamatan yang akan dipilih pada langkah berikutnya.

  12. Pilih direktori pada partisi Ubuntu VM yang terpasang untuk menyimpan data yang diselamatkan:

    masukkan deskripsi gambar di sini

  13. Tekan c untuk mulai menyalin data dari .vdi yang rusak ke direktori penyelamatan kami di VM sehat Anda.

Catatan:

  • Jika kita tidak dapat melihat file-file kita dengan [Quick Search]opsi di 6. kita mungkin harus melakukan a [Deeper Search]. Ini juga akan mencantumkan partisi yang dihapus dan ditimpa sebelumnya. Jadi kita perlu memastikan kita memilih partisi yang sesuai di mana data kita berada.

  • Jika kami telah mengambil snapshot dari .VDi kami mungkin menemukan ini dalam ~/.VirtualBox/Machines/<Name of Machine>/Snapshots/{###}.vmdktetapi setiap kali kami telah menggunakan fitur snapshot dari Virtual Box setiap perubahan dari snapshot akan ditulis ke file diferensial.

    Untuk menggabungkan file diferensial dengan hard drive kita perlu menghapus semua snapshot (yang mungkin bukan yang kita inginkan karena kita bisa mengembalikan ke snapshot sebelumnya daripada memanggil pemulihan data), atau kita perlu mengkloning drive mesin menggunakan:

    VBoxManage clonehd <name_of_source> <clone>
    

    Kemudian kami mengikat klon untuk menyelamatkan kami VM seperti yang digambarkan di atas.

  • Menulis ke .vdi yang rusak hanya dapat dilakukan setelah data aman karena hal ini dapat merusak sistem file.

  • Seandainya rescue kami Ubuntu terlalu kecil untuk menampung data yang diselamatkan, kami dapat membuat drive virtual baru untuk diikat ke VM. Drive ini kemudian harus dipasang di VM untuk dapat menyimpan data dari testdisk di sana.

Takkat
sumber
terima kasih untuk instruksi yang terinci ini. Saya mengikuti mereka dengan benar dan menambahkan file untuk disalin ke folder saya yang diselamatkan. Salinan berhasil tetapi cap waktu file sudah cukup lama: musim panas 2013, bukan dua hari yang lalu. Saya tidak ingat apakah saya melakukan sesuatu khususnya 8 bulan yang lalu, tetapi pada pandangan pertama, file saya dari dua hari yang lalu tidak ada. Saya sekarang menggunakan Deeper Searchuntuk menjelajahinya lagi.
719016
@ 213441265152351 - lihat juga folder snapshot ... mungkin ada .vmdk yang lebih baru (setidaknya dengan sistem saya di sini). Semoga Anda akan menemukan data Anda :)
Takkat
Saya melakukan Deeper Search, dan setelah beberapa jam, melihat-lihat lagi konten yang ingin saya pulihkan: mereka masih menunjuk ke versi musim panas 2013 dari mesin virtual, lebih awal dari sekadar memasang partisi dengan gnome nautilus, yang memberi saya bulan Januari Versi 2014, tetapi masih tidak dapat menemukan file dari dua hari yang lalu.
719016
1
@ 213441265152351: nah itu lebih rumit. Mungkin perbedaan gambar belum ditulis dengan tepat ke drive ketika "crash" terjadi. Anda dapat mencoba melihat disk dari Virtual Media Manager (lihat virtualbox.org/manual/ch05.html#diffimages ) untuk melihat apakah itu yang terjadi, tetapi saya harus mengatakan bahwa saya tidak akan memiliki yang baik ide tentang cara memulihkan data dari gambar-gambar ini.
Takkat
2
@Rmano: sebenarnya VDI yang dikloning tidak akan menyertakan snapshot apa pun tetapi akan menjadi kondisi VM terakhir dengan diferensial digabungkan. Hanya jika kita perlu mengkloning snapshot sebelumnya kita dapat menggunakan snapshot VDI untuk mengkloning tapi kemudian semua perubahan lebih dari snapshot tidak akan dimasukkan dalam klon.
Takkat
5

1) Cobalah untuk memulihkan snapshot oleh UUID, gunakan hack berikut:

  • pilih UUID negara yang ingin Anda pulihkan.
  • Buka file .xml, lebih disukai di alat (Internet Explorer berfungsi) yang memungkinkan navigasi yang mudah dari file XML.
  • Di VERY BOTTOM, di bagian Storage Controllers, cari UUID dari Kondisi Saat Ini dan catat nama StorageController =, tipe = dan tipe AttachedDevice =, port = dan perangkat = pengaturan.
  • Di tengah, temukan foto yang Anda inginkan.
  • Di bagian Pengontrol Penyimpanan snapshot, temukan AttachedDevice dengan nilai-nilai (nama / tipe / tipe / port / perangkat) yang cocok dengan nilai-nilai yang diambil di atas.
  • Gambar itu UUID mengidentifikasi gambar Snapshot untuk hard disk. Hapus kurung {}, dan

masukkan perintah C:> VBoxManage clonehd <UUID> CloneDisk.vdi

Semoga ini bisa membantu, saya menemukan solusinya di sini: ( https://forums.virtualbox.org/viewtopic.php?t=791 )

2) jika langkah-langkah dalam 1) tidak berhasil, inilah langkah-langkah lain yang dapat Anda coba. Cara mengkloning Status Saat Ini dari disk:

  • Buka Virtual Media Manager (Menu: File> Virtual Media Manager).
  • Arahkan ke hard disk yang ingin Anda tiru dan perluas pohon secara lengkap (gunakan tombol * pada keypad numerik).
  • Temukan file {hexUUID} .vdi yang dilampirkan ke VM yang ingin Anda klon Keadaan Saat Ini. Ini akan menjadi (salah satu) file daun di ujung cabang. Ketika Anda memilihnya, teks 'Terlampir ke:' di bagian bawah jendela akan mengatakan: 'Terlampir ke:', tanpa ada (nama foto) dalam tanda kurung setelahnya.
  • Klik nama file di sebelah kanan 'Lokasi:' yang ditampilkan di bagian bawah jendela.
  • Ctrl + C / Copy untuk menyalin teks ke clipboard, yang akan menjadi sesuatu seperti: (path) {b6441469-5ccb-418c-8fdd-73c5e1a17314} .vdi
  • Ctrl + V / Tempel dan ekstrak nilai hexUUID (menghapus kurung {}) dan jalankan clonehd untuk mengkloningnya!

Solusi ini dari sini: ( http://www.im-code.com/blog/blog/2012/02/04/virtualbox-clone-snapshots/ ) Keduanya berbicara hampir sama.

Dee
sumber
1

Saya memiliki sistem Linux yang rusak /dan fscktidak dapat memperbaikinya . Saya menggunakan pendekatan sederhana berikut:

  1. Tambahkan VDI pengganti baru ke mesin.
  2. Unduh ISO linux baru.
  3. Boot dan instal linux baru pada disk yang Anda tambahkan (1).
  4. Pasang disk pada sistem baru Anda dan salin file yang Anda butuhkan. Biasanya, ini berarti menyalin /home/user/folder. Ingatlah untuk menyalin file tersembunyi (file pengaturan).

Bekerja dengan baik untuk saya. Disk korupsi hanya menghambat boot, tidak ada kehilangan data di folder rumah saya.

Deleet
sumber