agg*_*877 8 c c++ assembly partitioning data-recovery
我意识到我问的问题不是一个简单的"O,这很简单!做一个简单的这个,那个和vo!" 事实是,一天晚上我没有想到我删除了错误的分区.我尝试了一些Windows和Linux工具(分区磁盘医生,Easeus,测试磁盘等),但没有一个工作.我认为这是因为我删除分区的方式.
我已经用C++编写了我自己的引导扇区创建者/备份工具,以及C和汇编程序中的一两个内核(尽管是相当无用的内核......)所以我认为我有足够的知识至少可以恢复它手动.
我的驱动器设置如下:
Size: 1.82TB
part0 100MB (redundant windows recovery partition)
part1 ~1760MB (my data partition)
Run Code Online (Sandbox Code Playgroud)
我是怎么打破它的:
在Windows 7中,我删除了第一个分区.然后我扩展了第二个占用第一个的可用空间,这意味着我仍然有2个分区,现在作为一个动态分区.我重新启动进入我的Ubuntu操作系统,并意识到我无法再读它了.我重新启动回Windows,删除了第一个分区,然后想了想,等等......我不应该这样做.不用说它现在已经死了.
我想要的是一些建议/良好的链接,从哪里开始,什么不该做,什么不期望.我希望如果期刊仍然完整,我将能够恢复驱动器.
编辑:
这是一个NTFS驱动器.在发布这个问题后,我想知道:鉴于我知道我的分区所在的大致位置,有没有办法轻松识别期刊?也许我可以自己重建一些其他驱动器/分区信息并将其写入磁盘.
我认为,第一步是弄清楚这些“动态分区”在 Windows 7 中是如何工作的。根据您的描述,听起来好像您从两个物理分区创建了一种逻辑卷。我的猜测是,第二个分区现在包含该卷的某种标头,这就是不熟悉该格式的恢复工具无法运行的原因。
如果您弄清楚 Windows 7在合并两个分区时到底做了什么,您应该能够编写一个提取逻辑卷映像的应用程序。
或者,您可以在http://www.tuxera.com/community/ntfs-3g-download/上查看 NTFS-3G,这是 NTFS 的 FUSE 实现。通过研究该代码,我敢打赌您可以找到一种方法来定位损坏的磁盘上的 NTFS 文件系统。完成后,尝试将从文件系统开头到磁盘末尾的所有内容提取到映像中,并在其上运行一些 ntfs 文件系统检查器。如果运气好的话,您将得到一个可移动的文件系统。
如果你想知道如何访问磁盘,只需在linux中打开相应的设备,就好像它是一个普通文件一样。不过,您可能需要将读取对齐到 512 字节(或者无论磁盘的扇区大小是什么。512 和较小范围的 4096 是常见值),否则 read() 可能会返回错误。