Recupera file da una macchina Virtualbox danneggiata .vdi


23

Il mio Ubuntu 12.04.1 in esecuzione su virtualbox ha esaurito lo spazio mentre stavo installando il software su di esso e ora non si riavvia . Ho dei file che devo recuperare da esso. Ho il ubuntu64.vdifile sul mio laptop Windows 7 (host) e mi chiedevo se c'è modo di recuperare i file dal file vdi.

Parallelamente, ho generato una nuova macchina 12.04.1 su virtualbox nello stesso laptop e userò quella invece di quella borked.

Posso aggiungere il borked vdiall'elenco dei dischi in quello funzionante. Quindi ho usato gnome nautilus per montare il disco borked.

Posso trovare i file lì dentro, ma hanno circa 2 mesi. Penso che questo coincida con l'ultima volta che ho fatto un'istantanea della macchina virtuale della macchina, ma non l'ultima volta che ho ottenuto una macchina funzionante, che è stata ieri. Esiste un modo per montare il vdida ieri, appena prima che si schiantasse?

MODIFICATO:

Ecco cosa Virtual Media Managermi dice del mio ubuntu64.vdifile: inserisci qui la descrizione dell'immagine

EDITED2:

Ho copiato il mio ubuntu.vdisu un USB esterno con molto spazio su disco. Ho provato a usare Windows per clonarlo, ma ho ricevuto un errore:

inserisci qui la descrizione dell'immagine

Ho provato lo stesso dalla VM funzionante tramite una cartella condivisa dell'unità USB e ha iniziato la clonazione. Ci è voluto un bel po ', ma è finito con successo:

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:

Dopo aver creato il file raw, corro testdiskcon Deeper Search, ottengo un elenco come questo: inserisci qui la descrizione dell'immagine

Ater Deeper Searchha finito, ottengo un elenco come questo:

inserisci qui la descrizione dell'immagine

Ma non so quale sia quale istantanea ... Qualche idea?


@Takkat, sembra fantastico. Come lo posso fare?
719016,

@Takkat, l'ho fatto e l'ho montato usando gnome nautilus, ma credo che abbia montato una versione di due mesi della macchina.
719016,

2
Il problema qui non è come ripristinare il disco ma come farlo unito all'istantanea. Se provi a clonare il tuo vdi, avrebbe un altro uuid e lo snapshot non funzionerà con esso e perderesti i dati più recenti. Non utilizzo le istantanee su base regolare perché in passato avevo dischi danneggiati e sono stato in grado di ripristinare il disco di base, ma ho sempre perso i delta. Spero che qualcuno qui dia una buona ricetta per recuperare sia la base che il delta.
Pablo Marin-Garcia,

1
Questo è per la prossima volta: non archiviare mai i dati sulla macchina virtuale, montare sempre un'unità esterna ... o eseguire backup / sincronizzazione frequenti tramite rsync.
Dee,

1
Prova a clonare l'istantanea più recente, non il disco originale. Dovresti usare Vboxmanage clonehd 2208...(copia l'UUID più recente qui). Vedi serverfault.com/a/506581/195528
Rmano,

Risposte:


21

Della riga di comando

Nel caso in cui utilizziamo Ubuntu come host, possiamo convertire il nostro disco .vdi in un disco raw con il seguente comando:

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

Possiamo quindi aprire testdisk Installa testdisk con questo file per recuperare i file sull'immagine dell'unità virtuale (vedi anche sotto):

testdisk <clone.raw>

Di una macchina virtuale

Nel caso in cui l'immagine dell'unità VDI rotta sia ancora registrata con Virtual Box, potremmo essere in grado di aggiungere questa immagine come unità alla nostra nuova macchina virtuale:

inserisci qui la descrizione dell'immagine

Avvia il tuo Ubuntu virtuale a cui abbiamo aggiunto il file .vdi rotto ma non monta l'unità .

  1. Crea una directory su una partizione montata lì per contenere i dati raccolti (ad es. ~/rescued),

  2. Installa testdisk Installa testdisk sulla macchina virtuale.

  3. Avvia testdisk da un terminale lì:

    sudo testdisk
    
  4. Scegliere l'unità appropriata da cui raccogliere i dati (qui mostrato per /sdb) e selezionare[Proceed]

    inserisci qui la descrizione dell'immagine

  5. Scegli il layout di partizione appropriato (di solito Intel)

  6. Seleziona [Analyse]-[Quick Search]

  7. Seleziona la partizione che contiene i dati da raccogliere (qui era presente solo una singola partizione NTFS):

    inserisci qui la descrizione dell'immagine

  8. Premere P per elencare i file su quel partiton.

  9. Passare alla directory contenente i dati. Visualizza i nomi dei file per assicurarti di aver scelto quelli giusti.

  10. Seleziona le directory o i file da raccogliere usando : . Tutti i file / directory selezionati saranno contrassegnati in verde:

    inserisci qui la descrizione dell'immagine

  11. Premere maiuscole C per copiare tutte le directory / i file selezionati nella directory di ripristino che verrà selezionata nel passaggio successivo.

  12. Scegli una directory sulle partizioni montate della tua VM Ubuntu per contenere i dati salvati:

    inserisci qui la descrizione dell'immagine

  13. Premere c per iniziare a copiare i dati dal file .vdi non funzionante nella nostra directory di ripristino nella VM sana.

Gli appunti:

  • Nel caso in cui non possiamo vedere i nostri file con l' [Quick Search]opzione in 6. potremmo dover eseguire un [Deeper Search]. Questo elencherà anche le precedenti partizioni cancellate e sovrascritte. Quindi dobbiamo assicurarci di selezionare le partizioni appropriate in cui risiedono i nostri dati.

  • Se avessimo preso delle istantanee del .vdi in cui potremmo trovarle, ~/.VirtualBox/Machines/<Name of Machine>/Snapshots/{###}.vmdkma ogni volta che avessimo usato la funzione istantanea di Virtual Box qualsiasi modifica da un'istantanea verrà scritta in un file differenziale.

    Per unire il file differenziale con il disco rigido, è necessario eliminare tutte le istantanee (che probabilmente non è quello che vogliamo, poiché potremmo semplicemente ripristinare l'istantanea precedente anziché chiamare per il recupero dei dati), oppure è necessario clonare l'unità della macchina utilizzando:

    VBoxManage clonehd <name_of_source> <clone>
    

    Quindi associamo il clone alla nostra VM di salvataggio come illustrato sopra.

  • La scrittura su .vdi non funzionante dovrebbe essere eseguita solo dopo che i dati erano al sicuro, poiché ciò potrebbe danneggiare ulteriormente il file system.

  • Nel caso in cui il nostro salvataggio Ubuntu sia troppo piccolo per contenere i dati salvati, potremmo creare un'altra nuova unità virtuale da associare alla VM. Questa unità deve quindi essere montata nella VM per poter salvare i dati dal testdisk lì.


grazie per queste istruzioni brillantemente dettagliate. Li ho seguiti correttamente e ho aggiunto i file da copiare nella mia cartella salvata. La copia ha avuto esito positivo, ma il timestamp dei file era piuttosto vecchio: estate 2013 anziché due giorni fa. Non ricordo se ho fatto qualcosa in particolare 8 mesi fa, ma a prima vista i miei file di due giorni fa non c'erano. Ora sto usando Deeper Searchper sfogliarlo di nuovo.
719016,

@ 213441265152351 - dai un'occhiata anche alla cartella dell'istantanea ... potrebbe esserci un nuovo .vmdk (almeno era con i miei sistemi qui). Spero che troverai i tuoi dati :)
Takkat,

Ho fatto un Deeper Search, e dopo un paio d'ore, ho sfogliato di nuovo il contenuto che volevo recuperare: stanno ancora indicando una versione estiva 2013 della macchina virtuale, prima di montare la partizione con gnome nautilus, che mi stava dando un gennaio Versione 2014, ma non è ancora possibile trovare i file di due giorni fa.
719016,

1
@ 213441265152351: beh, allora è più complicato. È possibile che le immagini differenziali non siano state ancora scritte in modo appropriato sull'unità quando si è verificato il "crash". Puoi provare a dare un'occhiata al disco da Virtual Media Manager (vedi virtualbox.org/manual/ch05.html#diffimages ) per vedere se fosse così, ma devo dire che non avrò un buon risultato idea su come recuperare i dati da queste immagini.
Takkat,

2
@Rmano: in realtà un VDI clonato non includerà alcuna istantanea ma sarà l'ultimo stato attuale della VM con i differenziali uniti. Solo nel caso in cui sia necessario clonare un'istantanea precedente, è possibile utilizzare un'istantanea VDI per clonare, ma tutte le modifiche successive all'istantanea non verranno incluse nel clone.
Takkat,

5

1) Prova a recuperare lo snapshot dall'UUID, usa il seguente hack:

  • scegli UUID dello stato che desideri ripristinare.
  • Apri il file .xml, preferibilmente in uno strumento (funziona Internet Explorer) che consente una facile navigazione del file XML.
  • In MOLTO BASSO, nella sezione Controller di archiviazione, trova l'UUID dello stato corrente e annota il nome StorageController =, type = e AttachedDevice type =, port = e device = settings.
  • Nel mezzo, trova l'istantanea che desideri.
  • Nella sezione Controller di archiviazione dell'istantanea, trova AttachedDevice con i valori (nome / tipo / tipo / porta / dispositivo) che corrispondono ai valori recuperati sopra.
  • Quell'UUID immagine identifica l'immagine dell'istantanea per il disco rigido. Rimuovere le parentesi {} e

inserisci il comando C:> VBoxManage clonehd <UUID> CloneDisk.vdi

Spero che sia d'aiuto, ho trovato la soluzione qui: ( https://forums.virtualbox.org/viewtopic.php?t=791 )

2) se i passaggi in 1) non funzionano, ecco altri passaggi che puoi provare. Come clonare lo stato corrente di un disco:

  • Apri Virtual Media Manager (Menu: File> Virtual Media Manager).
  • Passare al disco rigido che si desidera clonare ed espandere completamente l'albero (utilizzare il tasto * sul tastierino numerico).
  • Trova il file .vdi {hexUUID} che è allegato alla VM di cui vuoi clonare lo stato attuale. Saranno (uno dei) file foglia alla fine di un ramo. Quando lo selezioni, il testo "Allegato a:" nella parte inferiore della finestra dirà: "Allegato a:", senza alcun (nome di istantanea) tra parentesi dopo di esso.
  • Fai clic sul nome file a destra di "Posizione:" visualizzato nella parte inferiore della finestra.
  • Ctrl + C / Copia per copiare il testo negli Appunti, che sarà simile a: (percorso) {b6441469-5ccb-418c-8fdd-73c5e1a17314} .vdi
  • Ctrl + V / Incolla ed estrai il valore hexUUID (rimuovendo le parentesi {}) ed esegui clonehd per clonarlo!

Questa soluzione è da qui: ( http://www.im-code.com/blog/blog/2012/02/04/virtualbox-clone-snapshots/ ) Entrambi parlano principalmente dello stesso.


1

Avevo danneggiato un sistema Linux /e fscknon riuscivo a risolverlo . Ho usato il seguente approccio semplice:

  1. Aggiungi un nuovo VDI sostitutivo alla macchina.
  2. Scarica un nuovo ISO Linux.
  3. Avviare e installare un nuovo Linux sul disco aggiunto in (1).
  4. Montare il disco sul nuovo sistema e copiare i file necessari. Di solito, questo significa copiare la /home/user/cartella. Ricorda di copiare i file nascosti (file delle impostazioni).

Ha funzionato bene per me. Il danneggiamento del disco stava solo ostacolando l'avvio, non c'erano perdite di dati nella mia cartella home.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.