det*_*tly 5 filesystems mount disk-image
假设我有一个我有权读取的磁盘映像(可能已分区)。但是,我无权通过环回 * 挂载它。理论上,数据就在那里;我可以编写类似于 Linux 内核、分区编辑器和mount自己的代码来解析映像、查找分区、解释文件系统和提取文件的代码。但是对于 GNU/Linux 系统是否已经存在这样的工具?
*真的,我正在编写工具来处理它,我不想 (a) 假设这些工具的用户可以sudo和 (b) 要求他们去sudo可能不需要的地方。
(如果答案因文件系统而异,ext2-4对我来说更重要。但涵盖多个流行文件系统的答案将是首选。)
小智 9
7z(来自 p7zip)可以从许多但不是全部常见的 VM 磁盘映像、分区方案和文件格式中解压磁盘和文件系统映像。 https://www.7-zip.org/有列表(可以在 Windows 上使用 - p7zip 是 Linux/Posix 端口)
请注意,这通常是一个两步过程:
$ 7z l [raw HD image file]
Path = [raw HD image file]
Type = MBR
Physical Size = 42949672960
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
..... 104857600 104857600 0.ntfs
..... 42842718208 42842718208 1.ntfs
..... 1048576 1048576 2
------------------- ----- ------------ ------------ ------------------------
42948624384 42948624384 3 files
Run Code Online (Sandbox Code Playgroud)
下一步:
$ 7z x [raw image file] 0.ntfs
Extracting archive: [raw Image file]
Run Code Online (Sandbox Code Playgroud)
最后
$ 7z l 0.ntfs
Scanning the drive for archives:
1 file, 104857600 bytes (100 MiB)
Listing archive: 0.ntfs
--
Path = 0.ntfs
Type = NTFS
Physical Size = 104857600
Label = System Reserved
File System = NTFS 3.1
Cluster Size = 4096
Sector Size = 512
Record Size = 1024
Created = 2013-09-10 16:20:30
ID = 591300999067013540
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2013-09-10 16:20:30 ..HS. 262144 262144 [SYSTEM]/$MFT
[Lots of files]
2013-09-10 16:23:30 .RHSA 8192 8192 BOOTSECT.BAK
------------------- ----- ------------ ------------ ------------------------
2014-10-14 16:35:50 23880514 23957604 56 files, 31 folders
2013-09-10 16:20:30 1314956 1318920 3 alternate streams
2014-10-14 16:35:50 25195470 25276524 59 streams
Run Code Online (Sandbox Code Playgroud)
分机[234]
如果 /dev/whatever 的根目录中有一个文件foo:
debugfs -f <(echo cat /foo) /dev/whatever | tail -n +2 > /restore/file
Run Code Online (Sandbox Code Playgroud)
一般的做法
一种通用方法是创建一个具有两个磁盘驱动器(原始模式下的文件)的虚拟机,一个是映像(以只读方式提供给虚拟机),另一个用于恢复文件(如果无法使用网络来传输文件) 。
您应该能够从映像启动(如果不能:创建一个具有三个磁盘驱动器的虚拟机,一个用于启动),从而能够轻松访问文件系统。
由于无法挂载,因此必须以某种无需文件系统即可识别的形式写入数据,例如
tar -cf /dev/vdc /etc/passwd
Run Code Online (Sandbox Code Playgroud)
在主机上您可以简单地读取图像文件:
tar -xf imagefile.img
Run Code Online (Sandbox Code Playgroud)
tar识别存档的末尾并忽略文件的其余部分。
| 归档时间: |
|
| 查看次数: |
6531 次 |
| 最近记录: |