กู้คืนไฟล์จากเครื่อง Virtualbox ที่เสียหาย. vdi


23

ฉัน Ubuntu 12.04.1 ทำงานบน VirtualBox วิ่งออกมาจากพื้นที่ในขณะที่ผมติดตั้งซอฟต์แวร์บนและตอนนี้ก็ไม่ได้รีบูต ฉันมีไฟล์ที่ฉันต้องการกู้คืนจากมัน ฉันมีubuntu64.vdiไฟล์บนแล็ปท็อป Windows 7 (โฮสต์) และฉันสงสัยว่ามีวิธีกู้คืนไฟล์จากไฟล์ vdi หรือไม่

ในแบบคู่ขนานฉันสร้างเครื่อง 12.04.1 ใหม่บน virtualbox ในแล็ปท็อปเครื่องเดียวกันและฉันจะใช้เครื่องนั้นแทนการใช้บอร์ช

ฉันสามารถเพิ่ม borked vdiลงในรายการของดิสก์ในอันที่ทำงานได้ จากนั้นฉันใช้ gnome nautilus เพื่อติดดิสก์ borked

ฉันสามารถค้นหาไฟล์ในนั้นได้ แต่พวกเขามีอายุประมาณ 2 เดือน ฉันคิดว่าสิ่งนี้เกิดขึ้นพร้อมกับครั้งสุดท้ายที่ฉันทำ snapshot virtualbox ของเครื่อง แต่ไม่ใช่ครั้งสุดท้ายที่ฉันได้รับเครื่องทำงานซึ่งเป็นเมื่อวาน มีวิธีการติดตั้งvdiเมื่อวานนี้ก่อนที่มันจะผิดพลาดหรือไม่?

แก้ไข:

นี่คือสิ่งที่Virtual Media Managerบอกฉันเกี่ยวกับubuntu64.vdiไฟล์ของฉัน: ป้อนคำอธิบายรูปภาพที่นี่

EDITED2:

ฉันคัดลอกของฉันubuntu.vdiไปยัง USB ภายนอกที่มีพื้นที่ดิสก์มากมาย ฉันพยายามใช้ Windows เพื่อโคลน แต่มีข้อผิดพลาด:

ป้อนคำอธิบายรูปภาพที่นี่

ฉันลองแบบเดียวกันจาก VM ที่ทำงานผ่านโฟลเดอร์ที่ใช้ร่วมกันของไดรฟ์ USB และเริ่มการโคลน ใช้เวลาสักครู่ แต่เสร็จเรียบร้อยแล้ว:

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:

หลังจากสร้างไฟล์ raw ฉันทำงานtestdiskด้วยDeeper Searchฉันได้รับรายการดังนี้: ป้อนคำอธิบายรูปภาพที่นี่

ผสมDeeper Searchได้เสร็จสิ้นผมได้รับรายชื่อเช่นนี้:

ป้อนคำอธิบายรูปภาพที่นี่

แต่ฉันไม่รู้ว่าอันไหนเป็นภาพรวม ... ความคิดใดบ้าง


@ Takkat มันฟังดูเท่ ฉันจะทำสิ่งนั้นได้อย่างไร
719016

@ Takkat ฉันทำมันและติดตั้งโดยใช้ gnome nautilus แต่ฉันเชื่อว่ามันติดตั้งเครื่องรุ่นเก่าสองเดือน
719016

2
ปัญหาที่นี่ไม่ใช่วิธีการกู้คืนดิสก์ แต่จะรวมเข้ากับสแนปชอตได้อย่างไร หากคุณพยายามโคลน vdi ของคุณมันจะมี uuid อื่นสแนปชอตจะไม่ทำงานกับมันและคุณจะหลวมข้อมูลล่าสุด ฉันไม่ได้ใช้สแน็ปช็อตเป็นประจำเพราะฉันมีดิสก์ที่เสียหายในอดีตและฉันสามารถกู้คืนดิสก์ฐานได้ แต่จะหายไปจากสันดอนทุกครั้ง ฉันหวังว่าบางคนที่นี่ให้สูตรที่ดีในการกู้คืนทั้งฐานและเดลต้า
Pablo Marin-Garcia

1
นี่คือสำหรับครั้งต่อไป: ไม่เคยเก็บข้อมูลในเครื่องเสมือนมักจะติดตั้งไดรฟ์ภายนอก ... หรือสำรองบ่อย / rsyncซิงค์ผ่าน
Dee

1
ลองโคลนสแน็ปช็อตล่าสุดไม่ใช่ดิสก์ดั้งเดิม คุณควรใช้Vboxmanage clonehd 2208...(คัดลอก UUID ล่าสุดที่นี่) ดูserverfault.com/a/506581/195528
Rmano

คำตอบ:


21

ของบรรทัดคำสั่ง

ในกรณีที่เราใช้ Ubuntu เป็นโฮสต์เราสามารถแปลง. vdi disk เป็น raw disk ได้โดยใช้คำสั่งต่อไปนี้:

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

จากนั้นเราสามารถเปิดไฟล์testdisk ติดตั้ง testdiskเพื่อกู้คืนไฟล์ในอิมเมจไดรฟ์เสมือน (ดูด้านล่าง):

testdisk <clone.raw>

ของเครื่องเสมือน

ในกรณีที่ภาพไดรฟ์ VDI ที่ชำรุดยังคงลงทะเบียนกับกล่องเสมือนเราอาจจะสามารถเพิ่มภาพนี้เป็นไดรฟ์ไปยังเครื่องเสมือนใหม่ของเรา:

ป้อนคำอธิบายรูปภาพที่นี่

เริ่มเสมือนอูบุนตูที่เราได้เพิ่ม .vdi เสีย แต่ไม่ได้ติดตั้งไดรฟ์

  1. สร้างไดเรกทอรีบนพาร์ติชันที่ติดตั้งที่นั่นเพื่อเก็บข้อมูลที่ถูกเก็บเกี่ยว (เช่น~/rescued),

  2. ติดตั้งtestdisk ติดตั้ง testdiskบนเครื่องเสมือน

  3. เริ่ม testdisk จากเทอร์มินัล:

    sudo testdisk
    
  4. เลือกไดรฟ์ที่เหมาะสมเพื่อเก็บข้อมูลจาก (ที่นี่เพื่อดู/sdb) และเลือก[Proceed]

    ป้อนคำอธิบายรูปภาพที่นี่

  5. เลือกเค้าโครงพาร์ติชันที่เหมาะสม (โดยปกติIntel)

  6. เลือก[Analyse]-[Quick Search]

  7. เลือกพาร์ติชันที่มีข้อมูลที่จะเก็บเกี่ยว (ที่นี่มีพาร์ทิชัน NTFS เดียวเท่านั้นที่มีอยู่):

    ป้อนคำอธิบายรูปภาพที่นี่

  8. กด P เพื่อแสดงรายการไฟล์ในส่วนที่

  9. เรียกดูไดเรกทอรีที่มีข้อมูล ดูชื่อไฟล์เพื่อให้แน่ใจว่าคุณได้เลือกชื่อที่ถูกต้อง

  10. : เลือกไดเรกทอรีหรือไฟล์ที่จะเก็บเกี่ยวโดยใช้ ไฟล์ / ไดเรกทอรีที่เลือกทั้งหมดจะถูกทำเครื่องหมายเป็นสีเขียว:

    ป้อนคำอธิบายรูปภาพที่นี่

  11. กดตัวพิมพ์ใหญ่ C เพื่อคัดลอกไดเร็กทอรี / ไฟล์ที่เลือกทั้งหมดไปยังไดเร็กทอรีช่วยเหลือซึ่งจะถูกเลือกในขั้นตอนถัดไป

  12. เลือกไดเรกทอรีบนพาร์ติชั่นที่ติดตั้งบน Ubuntu VM เพื่อเก็บข้อมูลที่ได้รับการช่วยเหลือ:

    ป้อนคำอธิบายรูปภาพที่นี่

  13. กด c เพื่อเริ่มคัดลอกข้อมูลจาก. vdi ที่เสียหายไปยังไดเรกทอรีช่วยเหลือของเราใน VM ที่มีสุขภาพดีของคุณ

หมายเหตุ:

  • ในกรณีที่เราไม่สามารถมองเห็นไฟล์ของเรามี[Quick Search]ตัวเลือกใน6.[Deeper Search]เราอาจจะต้องดำเนินการ นี่จะแสดงรายการพาร์ติชันที่ถูกลบและแทนที่ก่อนหน้านี้ด้วย ดังนั้นเราต้องแน่ใจว่าเราเลือกพาร์ติชั่นที่เหมาะสมซึ่งข้อมูลของเราอยู่

  • หากเราถ่ายsnapshotของ. vdi เราอาจพบสิ่งเหล่านี้ใน~/.VirtualBox/Machines/<Name of Machine>/Snapshots/{###}.vmdkแต่เมื่อใดก็ตามที่เราใช้คุณสมบัติ snapshot ของ Virtual Box การเปลี่ยนแปลงใด ๆ จาก snapshot จะถูกเขียนลงในไฟล์ที่แตกต่างกัน

    ในการรวมไฟล์ดิจิตัลกับฮาร์ดไดรฟ์เราจำเป็นต้องลบสแนปชอตทั้งหมด (ซึ่งอาจไม่ใช่สิ่งที่เราต้องการจากนั้นเราสามารถกู้คืนสแน็ปช็อตก่อนหน้าแทนที่จะเรียกการกู้คืนข้อมูล) หรือเราต้องการโคลนไดรฟ์ของเครื่องโดยใช้:

    VBoxManage clonehd <name_of_source> <clone>
    

    จากนั้นเราผูกโคลนกับ VM กู้ภัยของเราตามที่อธิบายไว้ข้างต้น

  • การเขียนไปยัง. vdi ที่ใช้งานไม่ได้ควรทำหลังจากข้อมูลปลอดภัยแล้วเท่านั้นซึ่งอาจทำให้ระบบไฟล์เสียหายได้

  • ในกรณีที่อูบุนตูช่วยเหลือของเรามีขนาดเล็กเกินไปที่จะเก็บข้อมูลที่ได้รับการช่วยเหลือเราอาจสร้างไดรฟ์เสมือนใหม่ขึ้นมาใหม่เพื่อผูกกับ VM ไดร์ฟนี้ต้องถูกเมาท์ใน VM เพื่อให้สามารถบันทึกข้อมูลจาก testdisk ที่นั่น


ขอบคุณสำหรับคำแนะนำอย่างละเอียดเหล่านี้ ฉันติดตามอย่างถูกต้องและเพิ่มไฟล์เพื่อคัดลอกไปยังโฟลเดอร์ช่วยเหลือของฉัน การคัดลอกสำเร็จแล้ว แต่การประทับเวลาของไฟล์ค่อนข้างเก่า: ฤดูร้อนปี 2013 แทนที่จะเป็นสองวันที่ผ่านมา ฉันจำไม่ได้ว่าฉันทำอะไรโดยเฉพาะอย่างยิ่งเมื่อ 8 เดือนที่ผ่านมา แต่จากการดูครั้งแรกไฟล์ของฉันเมื่อสองวันก่อนไม่ได้อยู่ที่นั่น ตอนนี้ฉันกำลังใช้Deeper Searchเพื่อดูอีกครั้ง
719016

@ 213441265152351 - ดูที่โฟลเดอร์ snapshot ด้วย ... อาจมี. vmdk ที่ใหม่กว่า (อย่างน้อยก็เป็นกับระบบของฉันที่นี่) หวังว่าคุณจะได้พบกับข้อมูลของคุณ :)
Takkat

ฉันทำDeeper Searchและหลังจากผ่านไปสองสามชั่วโมงเนื้อหาที่ฉันต้องการกู้คืนจะถูกเรียกดูอีกครั้ง: พวกเขายังคงชี้ไปที่เครื่องเสมือนเวอร์ชันฤดูร้อนปี 2013 ก่อนหน้านี้เพิ่งจะติดตั้งพาร์ติชันด้วย gnome nautilus ซึ่งทำให้ฉันเป็นมกราคม รุ่น 2014 แต่ยังไม่สามารถค้นหาไฟล์ได้เมื่อสองวันที่แล้ว
719016

1
@ 213441265152351: นั่นมันซับซ้อนกว่ากันแล้ว อาจเป็นไปได้ว่ารูปที่แตกต่างนั้นยังไม่ได้เขียนอย่างเหมาะสมไปยังไดรฟ์เมื่อเกิด "ข้อผิดพลาด" คุณสามารถลองดูที่ดิสก์จาก Virtual Media Manager (ดูvirtualbox.org/manual/ch05.html#diffimages ) เพื่อดูว่าเป็นกรณีนี้หรือไม่ แต่ฉันต้องบอกว่าฉันจะไม่ดี แนวคิดเกี่ยวกับวิธีการกู้คืนข้อมูลจากภาพเหล่านี้
Takkat

2
@Rmano: อันที่จริงแล้ว VDI ที่ถูกโคลนจะไม่รวมสแนปชอตใด ๆ แต่จะเป็นสถานะปัจจุบันของ VM ที่มีการรวมส่วนต่าง เฉพาะในกรณีที่เราจำเป็นต้องโคลนสแนปชอตก่อนหน้านี้เราอาจใช้สแนปชอต VDI เพื่อโคลน แต่การเปลี่ยนแปลงทั้งหมดในภายหลังจากสแน็ปช็อตจะไม่รวมอยู่ในโคลน
Takkat

5

1) พยายามกู้คืน snapshot โดย UUID ใช้แฮ็คต่อไปนี้:

  • เลือก UUID ของสถานะที่คุณต้องการกู้คืน
  • เปิดไฟล์. xml โดยเฉพาะอย่างยิ่งในเครื่องมือ (Internet Explorer ใช้งานได้) ที่ช่วยให้การนำทางไฟล์ XML ได้ง่าย
  • ที่ VERY BOTTOM ในส่วนตัวควบคุมที่เก็บค้นหา UUID ของสถานะปัจจุบันและจดบันทึกชื่อ StorageController =, type = และ AttachedDevice type =, พอร์ต = และอุปกรณ์ = การตั้งค่า
  • ตรงกลางให้ค้นหาภาพรวมที่คุณต้องการ
  • ในส่วน Storage Controller ของสแน็ปช็อตค้นหา AttachedDevice ด้วยค่า (ชื่อ / ประเภท / ประเภท / พอร์ต / อุปกรณ์) ที่ตรงกับค่าที่ดึงมาด้านบน
  • อิมเมจนั้น UUID ระบุอิมเมจสแนปชอตสำหรับฮาร์ดดิสก์ ลบเครื่องหมายวงเล็บปีกกา {} และ

ป้อนคำสั่ง C:> VBoxManage clonehd <UUID> CloneDisk.vdi

หวังว่าจะช่วยได้ฉันพบวิธีแก้ปัญหาที่นี่: ( https://forums.virtualbox.org/viewtopic.php?t=791 )

2) หากขั้นตอนใน 1) ใช้งานไม่ได้ให้ทำตามขั้นตอนอื่นที่คุณสามารถลองได้ วิธีการโคลนสถานะปัจจุบันของดิสก์:

  • เปิดตัวจัดการสื่อเสมือน (เมนู: ไฟล์> ตัวจัดการสื่อเสมือน)
  • นำทางไปยังฮาร์ดดิสก์ที่คุณต้องการโคลนและขยายแผนผัง (ใช้ปุ่ม * บนแป้นพิมพ์ตัวเลข)
  • ค้นหาไฟล์ {hexUUID} .vdi ที่เชื่อมต่อกับ VM ที่คุณต้องการโคลนสถานะปัจจุบันของ มันจะเป็น (หนึ่งใน) ไฟล์ใบไม้ที่ส่วนท้ายของสาขา เมื่อคุณเลือกข้อความ 'แนบกับ:' ที่ด้านล่างของหน้าต่างจะพูดว่า: 'แนบกับ:' โดยไม่มีชื่อสแนปชอตในวงเล็บหลังจากนั้น
  • คลิกชื่อไฟล์ทางด้านขวาของ 'ตำแหน่ง:' แสดงที่ด้านล่างของหน้าต่าง
  • Ctrl + C / คัดลอกเพื่อคัดลอกข้อความไปยังคลิปบอร์ดซึ่งจะเป็นดังนี้: (เส้นทาง) {b6441469-5ccb-418c-8fdd-73c5e1a17314} .vdi
  • Ctrl + V / วางและแยกค่า hexUUID (ลบเครื่องหมายวงเล็บ {}) และเรียกใช้ clonehd เพื่อโคลนมัน!

วิธีแก้ปัญหานี้มาจากที่นี่: ( http://www.im-code.com/blog/blog/2012/02/04/virtualbox-clone-snapshots/ ) ทั้งสองพูดส่วนใหญ่เกี่ยวกับเดียวกัน


1

ฉันได้ระบบลินุกซ์ที่ได้รับความเสียหาย/และไม่สามารถแก้ไขได้fsck ฉันใช้วิธีการง่ายๆดังต่อไปนี้:

  1. เพิ่ม VDI ทดแทนใหม่ลงในเครื่อง
  2. ดาวน์โหลด ISO linux ใหม่
  3. บูตและติดตั้ง linux ใหม่บนดิสก์ที่คุณเพิ่มใน (1)
  4. เมานต์ดิสก์บนระบบใหม่ของคุณและคัดลอกไฟล์ที่คุณต้องการ โดยปกติหมายถึงการคัดลอก/home/user/โฟลเดอร์ อย่าลืมคัดลอกไฟล์ที่ซ่อนอยู่ (ไฟล์การตั้งค่า)

ทำงานได้ดีสำหรับฉัน ความเสียหายของดิสก์เป็นเพียงการขัดขวางการบูตไม่มีการสูญหายของข้อมูลในโฟลเดอร์บ้านของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.