如何从VDI文件中提取文件

16

我在我的电脑上(WIN 7)使用VirtualBox。

我成功地查看了一些.VDI文件中的内容。

我该如何打开或查看我的.vdi文件的内容,并从中检索文件?


你可以通过 VBoxManage clonehd input.vdi output.block --format=raw 创建 VDI 的原始副本。下一步是找到一种方法来映射原始块,以便可以挂载其分区。 - konsolebox
6个回答

16

我有个损坏的VDI文件(根据我使用的无数个VDI查看器程序所显示的加密错误,例如无效句柄、未选择文件,请格式化磁盘),我无法打开该文件,即使使用VirtualBox也不行。我尝试使用VirtualBox命令行工具进行转换,但没有成功。我试图将其挂载到新的虚拟机上,使用ImDisk进行挂载,但都失败了。我阅读了四篇微软TechNet文章,下载了他们的实用程序,并尝试了无数种方法,但都没有成功。

然而,当我尝试使用7Zip (https://www.7-zip.org/download.html)时,我能够查看所有文件并进行有选择性的提取。以下是我的操作步骤:

  • 安装7Zip(如果提示,请确保您还安装了上下文菜单项)。
  • 右键单击VDI文件,选择“打开压缩文件”。
  • 窗口出现后,在存档中右键单击最大的文件(应该有两个文件,一个是“基本Microsoft数据分区”,另一个是其他文件,称为系统或其他)。点击最大的那个左键,然后单击“在内部打开”。每个文件旁边都有以字节为单位列出的文件大小。
  • 你应该能够看到存档文件中的所有文件。您可以将要提取的文件直接拖到桌面上。您还可以双击文件夹以查看其中的内容。
如果在文件提取后7zip给出了晦涩难懂的错误提示,这意味着你关闭了Windows Explorer中正在复制文件的文件夹窗口。
如果你没有关闭窗口,但仍然遇到错误,请尝试逐个提取每个子文件夹。同时确保你有足够的本地硬盘空间来拷贝文件,即使你只是将它们拷贝到外部磁盘上,因为7zip首先将它们拷贝到本地磁盘上。如果文件具有高度压缩性,你可能可以使用NTFS压缩AppData/temp文件夹,当7zip在本地提取文件时,它会对它们进行压缩,以便能够将其复制到其他磁盘。

对我来说运行得很好,而且7-zip非常轻量级和通用,应该是任何Windows安装的一部分。要提取符号链接,请以管理员身份运行7-zip。 - StellarVortex

12

您可以使用qemu-nbd挂载来自.vdi镜像的分区:

sudo apt install qemu-utils
sudo modprobe nbd

vdi="/path/to/your.vdi"  # <<== Edit this

sudo qemu-nbd -c /dev/nbd0 "$vdi"

# view partitions and select the one you want to mount.
# Using parted here, but you can also use cfdisk, fdisk, etc.

sudo parted /dev/nbd0 print
part=nbd0p2 # <<== partition you want to mount

sudo mkdir /mnt/vdi
sudo mount /dev/$part /mnt/vdi

好像有些用户需要在modprobe命令中添加参数。在我使用Ubuntu 16.04时不需要这样做,但如果这对你不起作用,请尝试添加max_part=16

sudo modprobe nbd max_part=16

完成时:

sudo umount /dev/$part
sudo qemu-nbd --disconnect /dev/nbd0

直到 sudo parted /dev/nbd0 print,这在我的 Kubuntu 16.04 上运行良好,但是 sudo mount /dev/nbd0p2 mnt 失败并显示“特殊设备 /dev/nbd0p2 不存在”,尽管调用 parted ... print 列出了我要挂载的分区号为 2。 - Supernormal
谢谢,我已经使用过了。我发现 VDI 的时间已经改变了,所以它的内容可能也会改变,如果我需要在 VBox 中使用这个 VDI 来恢复机器,可能会出现问题。就我所看到的,我已经成功地复制了我的文件,并且没有遇到任何问题。也许使用“-o ro,noload”挂载可以使其不可更改,但我还没有尝试过。 - qdinar

9

试用VMXray

您可以在浏览器内直接探索vmdk镜像。选择要提取的文件并将其提取到所需位置。不仅限于vmdk,您还可以使用VMXRay查看和从RAW、QEMU/KVM QCOW2、Virtualbox VDI和ISO镜像中提取文件。当前支持ext2、ext3、FAT和NTFS文件系统。您还可以使用它从相机SD卡的原始转储中恢复已删除的照片等。

而且,请放心,从您的文件中没有数据会被发送到网络上。数据永远不会离开您的计算机。VMXRay完全在您的浏览器内运行。


1
在Kubuntu 16.04中的Firefox 58或Vivaldi 1.15对我不起作用。 - Supernormal
似乎没有办法在浏览器之外导出文件。 - osprey

8
作为第一步,您可以尝试使用任何存档查看器打开 .vdi 文件。
我尝试使用 7zip 打开 Ubuntu Mate 的 .vdi 文件,并且它显示了所有 Linux 文件系统,如下所示。

enter image description here


3

一种简单的方法是将VDI作为第二个磁盘附加到另一个虚拟机上。

该驱动器不会立即显示;在Windows中,打开磁盘管理器,将磁盘联机并分配一个驱动器号。


1
你可以使用ImDisk在Windows中将VDI文件挂载为本地驱动器。请参考此虚拟机论坛的帖子并变得快乐)) 此外,您还可以将VDI转换为VHD,并使用默认的Windows磁盘管理器来挂载VHD(在此处描述)

1
从阅读该线程向下的内容来看,显然lmDisk不支持动态扩展VDI,这是默认设置,因此可能不是最佳选择。我最终只是启动了虚拟机并提取了文件,但如果操作系统损坏,则无法使用该方法。 - Alex Lauerman
2
如果操作系统损坏,您可以启动另一个虚拟机并附加VDI磁盘以进行探索。 - VaryCode.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接