Mus*_*afa 7 data-recovery ntfs gparted
我已经通过单击“设备->创建分区表...然后应用”使用 gparted 擦除了我的 NTFS(Windows)分区表,有没有办法恢复我的 NTFS 分区?
我尝试使用此命令gpart /dev/sda
得到以下输出:
Begin scan...
End scan.
Checking partitions...
Ok.
Guessed primary partition table:
Primary partition(1)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Primary partition(2)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Primary partition(3)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Primary partition(4)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Run Code Online (Sandbox Code Playgroud)
这个输出是什么意思?有什么办法可以恢复吗?
有可能恢复分区表,但需要满足 2 个条件:
这是如何工作的,内核将分区布局保存在内存中。如果一个分区在使用中,它需要知道该分区从哪里开始,所以它会拒绝重新加载新表,直到它不再被使用。
这该怎么做:
去/sys/block/sda
。里面有,你会看到一个目录为每个分区(sda1
,sda2
,等)。每个里面都有一个名为start
and size
(so /sys/block/sda/sda1/start
)的文件。如果您使用这些完全相同的起始位置和大小重新创建分区表,您会没事的。
请注意,它不保留分区类型。Linux 不关心这些信息。因此,重新创建后,您必须记住分区类型设置为(NTFS 或其他)。
# fdisk -l /dev/sdc 磁盘 /dev/sdc:8006 MB,8006926336 字节,15638528 个扇区 单位 = 1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标识符:0x000ce29c 设备引导开始结束块 Id 系统 /dev/sdc1 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 15638527 6769664 83 Linux
# 挂载 | grep sdc /dev/sdc2 on /mnt/tmp type xfs (rw)
#猫/mnt/tmp/world 你好
# fdisk /dev/sdc 欢迎使用 fdisk (util-linux 2.22.2)。 更改将仅保留在内存中,直到您决定写入它们。 在使用 write 命令之前要小心。 命令(m 寻求帮助):d 分区编号 (1-4):1 分区 1 已删除 命令(m 寻求帮助):d 所选分区 2 分区 2 已删除 命令(m 寻求帮助):p 磁盘 /dev/sdc:8006 MB,8006926336 字节,15638528 个扇区 单位 = 1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标识符:0x000ce29c 设备引导开始结束块 Id 系统 命令(m 寻求帮助):w 分区表被修改了! 调用 ioctl() 重新读取分区表。 警告:重新读取分区表失败,错误 16:设备或资源繁忙。 内核仍然使用旧表。新表将用于 下次重新启动或运行 partprobe(8) 或 kpartx(8) 之后 同步磁盘。
请注意,它仍然已安装并可访问:
#猫/mnt/tmp/world 你好
# cd /sys/class/block/sdc # ls alignment_offset device@ events_poll_msecs power/ ro slaves/ bdi@discard_alignment ext_range 队列/sdc1/stat 能力事件持有者/范围 sdc2/子系统@ dev events_async 飞行中可移动大小 uevent # cat sdc1/start 2048 # cat sdc1/大小 2097152 # cat sdc2/start 2099200 # 猫 sdc2/大小 13539328
# fdisk /dev/sdc 欢迎使用 fdisk (util-linux 2.22.2)。 更改将仅保留在内存中,直到您决定写入它们。 在使用 write 命令之前要小心。 命令(m 寻求帮助):n 分区类型: p 主要(0 个主要,0 个扩展,4 个免费) e 扩展 选择(默认 p):p 分区编号(1-4,默认 1):1 第一扇区(2048-15638527,默认2048):2048 最后一个扇区,+扇区或 +size{K,M,G}(2048-15638527,默认 15638527):+2097151 设置了类型为 Linux 且大小为 1 GiB 的分区 1 命令(m 寻求帮助):n 分区类型: p 主要(1 个主要,0 个扩展,3 个免费) e 扩展 选择(默认 p):p 分区编号(1-4,默认 2):2 第一扇区(2099200-15638527,默认2099200):2099200 最后一个扇区,+扇区或 +size{K,M,G}(2099200-15638527,默认 15638527):+13539327 设置了类型为 Linux 且大小为 6.5 GiB 的分区 2 命令(m 寻求帮助):p 磁盘 /dev/sdc:8006 MB,8006926336 字节,15638528 个扇区 单位 = 1 * 512 = 512 字节的扇区 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标识符:0x000ce29c 设备引导开始结束块 Id 系统 /dev/sdc1 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 15638527 6769664 83 Linux 命令(m 寻求帮助):w 分区表被修改了! 调用 ioctl() 重新读取分区表。 警告:重新读取分区表失败,错误 16:设备或资源繁忙。 内核仍然使用旧表。新表将用于 下次重新启动或运行 partprobe(8) 或 kpartx(8) 之后 同步磁盘。
!! 请注意,在指定最后一个扇区时,我们使用大小 - 1。!!
让我们卸载驱动器,运行partprobe
以告诉内核获取新表,然后重新安装并验证我们仍然可以访问我们的文件。
# 卸载 /mnt/tmp/ # partprobe /dev/sdc # 挂载 /dev/sdc2 /mnt/tmp #猫/mnt/tmp/world 你好
归档时间: |
|
查看次数: |
15374 次 |
最近记录: |