如何使用fdisk将未被覆盖的原有磁盘分区重新添加至新分区表
如何使用fdisk将未被覆盖的原有磁盘分区重新添加至新分区表
别担心,只要你之前准确记下了旧分区的起始扇区、结束扇区以及分区类型信息,用fdisk把它恢复到新分区表里其实非常简单,我给你一步步拆解操作:
第一步:启动fdisk工具
打开终端,运行以下命令(注意替换成你的磁盘设备名,比如你的是/dev/nvme0n1):sudo fdisk /dev/nvme0n1👉 这里一定要确认磁盘设备名正确,选错磁盘会直接破坏数据,建议先用
lsblk或fdisk -l再核对一遍。第二步:创建新分区
在fdisk的交互提示符下,输入n来创建新分区:- 系统会询问是创建主分区(
p)还是扩展分区(e),根据你之前记录的旧分区类型选择即可; - 接着输入分区号(比如如果旧分区是第2个,当前新表中没有占用2号的话就填2,否则选一个未使用的编号);
- 最关键的部分:输入你之前记下的旧分区起始扇区数值,然后输入旧分区的结束扇区数值(如果之前记录的是大小,也可以用
+XXG这种格式输入,但用扇区数是最精确的)。
- 系统会询问是创建主分区(
第三步:匹配旧分区类型
输入t来修改分区类型码:- 输入你刚创建的分区编号;
- 输入旧分区对应的类型码(比如Linux文件系统通常是
83,EFI分区是EF,NTFS是07,你之前的fdisk输出里应该有这个信息,照着填就行)。
第四步:验证并保存分区表
输入p打印当前的分区表,仔细核对新添加的分区的起始/结束扇区、类型码是否和你之前记录的完全一致。
如果一切没问题,输入w保存分区表并退出fdisk,系统会自动重新读取分区信息。第五步:验证分区可用性
退出后,用lsblk或sudo fdisk -l /dev/nvme0n1查看分区是否已经出现。之后可以尝试挂载分区:sudo mkdir -p /mnt/recovered_partition sudo mount /dev/nvme0n1pX /mnt/recovered_partition # 替换X为你的分区编号如果能成功挂载,并且能看到里面的文件,说明操作成功了!
额外注意事项
- 操作前建议先备份当前的分区表,比如用
sgdisk:
万一操作失误,还能用sudo sgdisk --backup=nvme0n1_partition_backup.gpt /dev/nvme0n1sudo sgdisk --restore=nvme0n1_partition_backup.gpt /dev/nvme0n1恢复。 - 如果挂载时提示文件系统损坏,可以先卸载分区,然后运行文件系统检查工具(比如ext4用
sudo e2fsck /dev/nvme0n1pX),不过这一步要谨慎,确保没有写入操作。 - 如果你不确定旧分区是否被部分覆盖,建议先试试
testdisk这类工具扫描磁盘,确认分区内的数据还完整,再进行上述操作,避免错误的分区表导致数据恢复难度增加。
备注:内容来源于stack exchange,提问作者E. K.




