我在 Windows 7 PC 上使用 VirtualBox。
如何打开或查看
.vdi
文件的内容并从内部检索文件?
我有一个损坏的 VDI 文件(根据我使用过的无数 VDI 查看器程序,这些程序都存在诸如无效句柄、未选择文件、请格式化磁盘等神秘错误),并且我无法打开该文件,即使使用 VirtualBox 也是如此。我尝试使用 VirtualBox 命令行工具对其进行转换,但没有成功。我尝试将其安装到新的虚拟机,尝试使用 ImDisk 进行安装,但没有成功。我阅读了四篇 Microsoft TechNet 文章,下载了他们的实用程序并尝试了无数的方法;没有成功。
但是,当我尝试 7Zip (https://www.7-zip.org/download.html) 时,我能够查看所有文件,并有选择地提取它们。我是这样做的:
如果 7zip 在解压文件后出现神秘错误,则意味着您在 Windows 资源管理器中关闭了要将文件复制到的文件夹窗口。
如果您没有关闭窗口并且仍然收到错误,请尝试单独提取每个子文件夹。还要确保您有足够的本地硬盘空间来复制文件,即使您只是将它们复制到外部磁盘,因为 7zip 首先将它们复制到本地磁盘。如果文件具有高度可压缩性,您也许可以对 AppData/temp 文件夹使用 NTFS 压缩,这样当 7zip 在本地提取文件时,它会压缩它们,以便可以将它们复制到您的其他磁盘。
您可以使用
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
尝试VMXray。
您可以直接在浏览器中浏览 vmdk 映像。选择要提取的文件并将其提取到所需位置。不仅仅是 vmdk,您还可以使用 VMXRay 从 RAW、QEMU/KVM QCOW2、Virtualbox VDI 和 ISO 映像中查找和提取文件。 ext2、ext3、FAT 和 NTFS 是当前支持的文件系统。例如,您还可以使用它从相机 SD 卡的原始转储中恢复已删除的照片。
而且,不用担心,您的文件中的任何数据都不会通过网络发送。数据永远不会离开您的机器。 VMXRay 完全在您的浏览器内工作。
一种简单的方法是将 VDI 作为另一个虚拟机中的第二个磁盘附加。
驱动器没有立即出现;在 Windows 中,转到磁盘管理器,使磁盘联机并为其分配驱动器号。
您可以使用 ImDisk 将 VDI 文件挂载为 Windows 中的本地驱动器。关注 此 virtualbox 论坛 主题并变得快乐))您还可以将 VDI 转换为 VHD 并使用默认的 Windows 磁盘管理器来挂载 VHD (此处描述)