fdisk仅删除分区表条目而不覆写数据,安全擦除需两步:先用fdisk删除分区,再用dd或shred覆写对应物理区域;操作前须精准识别设备、卸载分区并检查lvm/加密/raid结构。

fdisk 本身不提供“安全擦除”功能,它只能删除分区表条目(即逻辑上移除分区),不会覆盖磁盘上的原始数据。所谓“安全删除分区”,实际分两步:先用 fdisk 删除分区定义,再对对应区域执行数据覆写(如用 shred 或 dd)。直接运行 fdisk 并删除分区后,数据仍可被恢复工具读取。
确认目标设备与分区,避免误操作
操作前务必精准识别待处理磁盘,尤其在多盘系统中。建议按以下顺序验证:
- 用
lsblk或sudo fdisk -l列出所有块设备,重点关注 SIZE、TYPE(part/disk)、MOUNTPOINT(是否已挂载) - 确认目标分区未被挂载:
mount | grep /dev/sdXN,若输出非空,先执行sudo umount /dev/sdXN - 检查是否有 LVM、加密或 RAID 元数据(如
sudo pvdisplay、sudo cryptsetup status),避免破坏底层结构
用 fdisk 交互式删除分区
进入 fdisk 后操作需谨慎,每步不可逆:
- 运行
sudo fdisk /dev/sdX(注意是整盘设备如/dev/sdb,不是分区如/dev/sdb1) - 输入
p查看当前分区表,核对序号(如1、2)和起止扇区 - 输入
d删除分区;若存在多个分区,fdisk 会提示选择序号,输入对应数字(如删第2个分区就输2) - 重复
d可删多个分区;全部删完后输入w写入变更并退出(q是不保存退出) - 再次运行
sudo fdisk -l /dev/sdX确认分区表已清空
对原分区区域覆写数据实现真正安全擦除
仅删分区表远远不够。若需防止数据恢复,必须覆写对应物理区域:
- 查原分区起始扇区与大小:用
sudo fdisk -l /dev/sdX记录 Start(扇区号)和 Sectors 数值 - 换算为字节偏移:起始字节 = Start × 512,长度字节 = Sectors × 512(假设扇区大小512B)
- 用
dd覆写(示例:覆写第1分区):sudo dd if=/dev/zero of=/dev/sdX bs=512 seek=START_SECTOR count=SECTOR_COUNT conv=notrunc
(将START_SECTOR和SECTOR_COUNT替换为实际数值) - 更可靠方式用
shred(需确保目标是分区设备文件,如/dev/sdX1):sudo shred -v -n1 -z /dev/sdX1(-n1 表示覆写1次,-z 补零掩盖痕迹)
删除后验证与收尾
操作完成后建议快速验证效果:
- 用
sudo hexdump -C /dev/sdX | head查看开头是否仍残留文件系统签名(如 ext4 的53 45 46 33) - 对原分区区域(如
/dev/sdX1)尝试sudo file -s /dev/sdX1,应返回 “data” 而非 “ext4 filesystem” 等 - 如需彻底释放整块磁盘,可在 fdisk 中创建一个新分区覆盖全部空间,再格式化:
sudo mkfs.ext4 /dev/sdX1











