我有一个新磁盘,所以我想看看testdisk
备份是如何工作的。
使用 对磁盘进行分区和格式化后gksu gparted /dev/sdc
,我得到了以下结果:
$ sudo fdisk -lu /dev/sdc
Disk /dev/sdc: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders, total 117210240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c0705
Device Boot Start End Blocks Id System
/dev/sdc1 63 20980889 10490413+ 83 Linux
/dev/sdc2 20980890 117210239 48114675 5 Extended
/dev/sdc5 20980953 83891429 31455238+ 83 Linux
/dev/sdc6 83891493 100663289 8385898+ 83 Linux
/dev/sdc7 100663353 109049219 4192933+ 83 Linux
/dev/sdc8 109049283 117210239 4080478+ 82 Linux swap / Solaris
因此,在此之后,我想备份分区的引导记录testdisk
,然后恢复它。所以我这样做:
cd /tmp
sudo testdisk
... 进而
[ Create ] Create a new log file
- 从
Select a media
选择Disk /dev/sdc - 60 GB / 55 GiB
,然后[Proceed ]
- 从中
Please select the partition table type,
选择[Intel ] Intel/PC partition
- 在下一个屏幕上,选择
[ Analyse ] Analyse current partition structure...
;我得到这个:
1 P Linux 0 1 1 1305 254 63 20980827 2 E 扩展 LBA 1306 0 1 7295 254 63 96229350 没有可启动分区 5 升 Linux 1306 1 1 5221 254 63 62910477 X 扩展 5222 0 1 6265 254 63 16771860 6 升 Linux 5222 1 1 6265 254 63 16771797 X 扩展 6266 0 1 6787 254 63 8385930 7 升 Linux 6266 1 1 6787 254 63 8385867 X 扩展 6788 0 1 7295 254 63 8161020 8 L Linux 交换 6788 1 1 7295 254 63 8160957
- 我选择
[ Backup ] Save current partition list to backup.log file and proceed
- 回答;我
n
得到Should TestDisk search for partition created under Vista ?
:
磁盘 /dev/sdc - 60 GB / 55 GiB - CHS 7296 255 63 分区起始结束扇区大小 * Linux 0 1 1 1305 254 63 20980827 大号Linux 1306 1 1 5221 254 63 62910477 大号Linux 5222 1 1 6265 254 63 16771797 大号Linux 6266 1 1 6787 254 63 8385867 L Linux 交换 6788 1 1 7295 254 63 8160957
- 我按下
Enter: to continue
;我得到:
磁盘 /dev/sdc - 60 GB / 55 GiB - CHS 7296 255 63 分区起始结束扇区大小 1 * Linux 0 1 1 1305 254 63 20980827 2 E 扩展 LBA 1306 0 1 7295 254 63 96229350 5 升 Linux 1306 1 1 5221 254 63 62910477 6 升 Linux 5222 1 1 6265 254 63 16771797 7 升 Linux 6266 1 1 6787 254 63 8385867 8 L Linux 交换 6788 1 1 7295 254 63 8160957
- 选择
[ Quit ] Return to main menu
这里 [ Quit ]
从下一个菜单中选择[ Quit ] Quit program
从第一个菜单中选择
现在 中有一个backup.log
,/tmp
内容如下:
#1412861047 Disk /dev/sdc - 60 GB / 55 GiB - CHS 7296 255 63
1 : start= 63, size= 20980827, Id=83, P
2 : start= 20980890, size= 96229350, Id=05, E
5 : start= 20980953, size= 62910477, Id=83, L
6 : start= 83891493, size= 16771797, Id=83, L
7 : start=100663353, size= 8385867, Id=83, L
8 : start=109049283, size= 8160957, Id=82, L
重复上述过程将会把相同的内容附加到backup.log
。
现在,我想测试恢复;我再做一次sudo testdisk
……然后
[ Append ] Append information to log file
- 从
Select a media
选择Disk /dev/sdc - 60 GB / 55 GiB
,然后[Proceed ]
- 从中
Please select the partition table type,
选择[Intel ] Intel/PC partition
[ Delete ] Delete all data in the partition table
现在在下一个屏幕上选择- 回答
y
Clear MBR partition table by writing zero bytes to it? (Y/N)
- 回答
y
Clear partition table, confirm ? (Y/N)
- 得到
Partition table has been cleared. You have to reboot for the change to take effect.
并击中[Ok]
我们回到
Disk /dev/sdc
;现在选择[ Analyse ] Analyse current partition structure...
;这里得到:磁盘 /dev/sdc - 60 GB / 55 GiB - CHS 57231 64 32 当前分区结构: 分区起始结束扇区大小 没有可启动分区
- 点击
[Quick Search]
- 回答
n
Should TestDisk search for partition created under Vista ? [Y/N]
Stop
搜索一开始就点击;得到这个:警告:当前每柱面的磁头数量为 64 但正确的值可能是 255。 您可以使用几何菜单来更改该值。 这是值得尝试的 \- TestDisk 未找到某些分区 \- 或者由于分区重叠而无法写入分区表。
击中
[ Continue ]
,得到:磁盘 /dev/sdc - 60 GB / 55 GiB - CHS 57231 64 32 分区起始结束扇区大小 L Linux 0 1 32 10244 63 32 20981697
- 现在
l
打L: load backup
; - 选择
Disk /dev/sdc - ...
然后Choose the backup you want to restore:
点击[ Load ]
至此,我明白了:
<pre>Disk /dev/sdc - 60 GB / 55 GiB - CHS 57231 64 32
Partition Start End Size in sectors
P Linux 0 1 32 10244 36 26 20980827
L Linux 0 1 32 10244 63 32 20981697
L Linux 10244 38 26 40962 39 6 62910477
L Linux 40962 41 6 49151 63 26 16771797
L Linux 49152 1 26 53246 44 4 8385867
L Linux Swap 53246 46 4 57231 35 32 8160957</pre>
... 并以红色显示“结构:糟糕。”,如图所示:
我的问题是 - 为什么是“结构:不好”?我唯一能注意到的是前两个条目覆盖的范围大致相同;但为什么要testdisk
导入它们两个?如果我想从备份中恢复分区结构,如何避免这种情况?
答案1
好吧,如果能得到更专业的回答就更好了——不过,至少我在写这篇 OP 时找到了如何避免这个问题的方法。顺便说一下,这是TestDisk 6.11, Data Recovery Utility, April 2009
在 Ubuntu 11.04 上。磁盘清空后,重新启动sudo testdisk
并按照 OP 中的跟踪操作进入相同的屏幕(即您执行以下操作后看到的屏幕):
- 击中;
l
L: load backup
- 选择
Disk /dev/sdc - ...
然后Choose the backup you want to restore:
点击[ Load ]
)
在这里,转到第二个条目,并且:Use Left/Right Arrow keys to CHANGE partition characteristics:
直到获得D=Deleted
该分区;它看起来像这样:
现在,显然不再报告“不良结构”,并且一切都是绿色的;有趣的是,只有这个分区会做出这样的反应(例如,第一个分区即使设置为也不会引起任何变化D
)。
现在我只需按下Enter: to continue
;就会在下一个屏幕上显示:
Partition Start End Size in sectors
1 P Linux 0 1 32 10244 36 26 20980827
2 E extended LBA 10244 38 1 57231 63 32 96230208
5 L Linux 10244 38 26 40962 39 6 62910477
6 L Linux 40962 41 6 49151 63 26 16771797
7 L Linux 49152 1 26 53246 44 4 8385867
8 L Linux Swap 53246 46 4 57231 35 32 8160957
在它,选择[ Write ] Write partition structure to disk
;和
- 回答
y
Write partition table, confirm ? (Y/N)
- 得
You will have to reboot for the change to take effect.
,击中[Ok]
[ Quit ] Return to disk selection
在下一个屏幕上选择[ Quit ] Quit program
在下一个屏幕上选择
现在我可以这样做:
$ sudo fdisk -lu /dev/sdc
Disk /dev/sdc: 60.0 GB, 60011642880 bytes
64 heads, 32 sectors/track, 57231 cylinders, total 117210240 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c0705
Device Boot Start End Blocks Id System
/dev/sdc1 63 20980889 10490413+ 83 Linux
/dev/sdc2 20980928 117211135 48115104 f W95 Ext'd (LBA)
/dev/sdc5 20980953 83891429 31455238+ 83 Linux
/dev/sdc6 83891493 100663289 8385898+ 83 Linux
/dev/sdc7 100663353 109049219 4192933+ 83 Linux
/dev/sdc8 109049283 117210239 4080478+ 82 Linux swap / Solaris
... 几乎所有内容都与 OP 中的原始分区表相同 - 除了这里我有“ ”,而上面的第二个(“扩展”)分区f W95 Ext'd (LBA)
是“ ”。5 Extended
sdc2
如果有人能指出我做错了什么,以及我应该怎么做才能在删除之后重建完全相同的分区表,我将不胜感激。
编辑:我想我得到了更多的东西;区别不仅在于“ f W95 Ext'd (LBA)
”与“ 5 Extended
”;而且,fdisk
在第一种情况下:
255 heads, 63 sectors/track, 7296 cylinders, total 117210240 sectors
/dev/sdc2 20980890 117210239 48114675 5 Extended
...第二种情况:
64 heads, 32 sectors/track, 57231 cylinders, total 117210240 sectors
/dev/sdc2 20980928 117211135 48115104 f W95 Ext'd (LBA)
因此,CHS 几何图形 - 以及扩展分区的区域 - 是错误的;这可能是 OP 中获得的含义Warning: the current number of heads per cylinder is 64 but the correct value may be 255.
。因此,一旦我们进入主菜单,testdisk
我们就可以更改几何图形:
[ Geometry ] Change disk geometry
[ Heads ] Change head geometry
Enter the number of heads:
255
[ Sectors ] Change sector geometry
Enter the number of sectors per track (1-63):
63
[ Cylinders ] Change cylinder geometry
(此处无变化):Enter the number of cylinders:
7296
[ Ok ] Done with changing geometry
[ Analyse ] Analyse current partition structure
[Quick Search] Try to locate partition
n
到Should TestDisk search for partition created under Vista ? [Y/N]
testdisk
现在找到被删除的分区;点击L: load backup
Disk /dev/sdc -
然后Choose the backup you want to restore:
[ Load ]
再次Structure: Bad.
复制分区;将每个第二个分区设置为D
- 清除坏结构:
最后:
Enter: to continue
[ Write ] Write partition structure to disk
y
到Write partition table, confirm ? (Y/N)
[Ok]
到You will have to reboot for the change to take effect.
[ Quit ] Return to disk selection
[ Quit ] Quit program
现在fdisk
将报告相同的几何形状 - 以及扩展分区的相同范围:
255 heads, 63 sectors/track, 7296 cylinders, total 117210240 sectors
...
/dev/sdc2 20980890 117210239 48114675 f W95 Ext'd (LBA)
/dev/sdc2 20980890 117210239 48114675 5 Extended # first
/dev/sdc2 20980928 117211135 48115104 f W95 Ext'd (LBA) # second
...和之前的报告相比,现在我们拥有与第一个相同的范围,但仍然不是相同的文件系统类型(f W95 Ext'd (LBA)
而不是5 Extended
);但至少这样看起来好多了。