2011-08-20 24 views
1

由於數據塊(該文件系統認爲是整個驅動器)和文件系統的類型(FAT32,NTFS,EXT3)我想知道如何提取文件從數據的塊。任何想法如何做到這一點?如何從虛擬磁盤中提取文件?

+1

「哪個文件系統認爲是整個驅動器」 - 我想你的意思「這來賓操作系統認爲是一個附加的物理磁盤。」文件系統沒有驅動器的概念。 – cdhowie

回答

0

你將其安裝到使用

mount image /mount/point -o loop,ro 

一些點,並訪問其中的文件。之後,您可以再次卸載。

但我不understan什麼這與C或C++做。

+1

不幸的是,如果虛擬磁盤有一個分區表,這種直接的方法將不起作用。你首先必須運行'losetup',並給它分區的字節偏移量。 – cdhowie

2

你最終有兩個選擇:

  1. 安裝包含的主機上的虛擬磁盤映像文件系統。像losetup這樣的工具可以幫助實現這一點。
  2. 找到一個合適的庫,可以讓用戶在用戶空間中查看卷。基本上,你需要一個用戶模式的文件系統驅動程序,讓程序檢查目錄結構並提取文件。您可能可以重新使用fuse-ext2和ntfs-3g的某些部分。

這一切都假定虛擬磁盤只是一個平面圖像文件,而不是像VMDK或VDI這樣的專用容器。如果是這樣,您需要提取平面圖像或找到能夠將平面內容提供給其他庫的庫。

+0

#1似乎真的很混亂或緩慢,因爲你不知道什麼時候卸載。通話結束後,您可能會立即卸載,但那樣會很慢。 – chacham15

+0

@ chacham15:另一方面,您將使用與正常使用的相同內核驅動程序來掛載該文件系統(因此它應該非常可靠),並且提取將成爲從掛載點到目標的正常文件副本目錄。 –

相關問題