linux默认rm无法彻底删除文件,需用shred、srm或wipe覆盖物理存储并清空空闲区:shred适用于hdd单文件擦除;srm支持目录递归且符合dod标准;wipe提供多算法高安全性擦除;最后需填充并覆盖空闲区以防历史数据残留。

Linux 默认的 rm 命令只是解除文件链接、释放磁盘空间,原始数据仍保留在磁盘扇区中,用 photorec、debugfs 等工具很可能恢复。要真正“粉碎”文件、防止恢复,必须覆盖其占用的物理存储区域。安全删除的核心是:**覆盖 + 删除 + 清空残留**。
用 shred 覆盖并销毁单个文件
shred 是最常用的安全删除工具,适合机械硬盘(HDD),对 SSD 效果有限(因磨损均衡和 TRIM 机制)。命令结构清晰:
-
shred -u -z -n 3 filename:覆盖 3 次随机数据,最后用零填充一次(-z隐藏擦除痕迹),完成后自动删除文件(-u) -
-n 5可提高强度,但通常 3 次已足够应对常规恢复手段 - 注意:
shred不支持目录,需先用find配合处理整个文件夹
用 srm 彻底擦除文件或目录(含递归)
srm 来自 secure-delete 包,遵循美国国防部 DoD 5220.22-M 标准,支持目录递归擦除,比 shred 更适合批量敏感数据清理:
- 安装:
sudo apt install secure-delete - 擦除单个文件:
srm -z filename - 擦除整个目录(含子目录和隐藏文件):
srm -rz /path/to/sensitive-dir -
-z表示末尾加零填充;-r启用递归;不加-f时会交互确认,更安全
用 wipe 处理高敏场景(多算法可选)
wipe 提供多种国际擦除标准(如 GOST、VSITR、DoD),适合合规性要求高的环境:
- 安装:
sudo apt install wipe - 基础擦除:
wipe filename(默认 34 遍,较慢但强度高) - 快速模式(7 遍):
wipe -Q 7 filename - 递归擦除目录:
find /target/dir -type f -exec wipe {} \; - 注意:
wipe不自动删除目录本身,只处理其中的普通文件
清空磁盘空闲区,防止旧数据残留
即使文件已被安全擦除,未分配空间里仍可能存有历史碎片。需主动填充再覆盖空闲区:
- 填满空闲空间(用零):
dd if=/dev/zero of=/tmp/fill bs=1M status=progress,直到报 “No space left on device” - 立即删除该临时文件:
rm /tmp/fill - 再用随机数据覆盖一次(增强效果):
dd if=/dev/urandom of=/tmp/fill bs=1M status=progress && sync && rm /tmp/fill - 此步骤建议在系统空闲时执行,耗时较长但能封堵绝大多数恢复路径











