用于删除无法以任何代价检索的文件的 Unix 命令

Unix command to remove a file that can't be retrieved at any cost

rm 命令只从磁盘中删除引用而不是实际数据,以便以后可以检索,有没有同时删除引用和数据的命令。

这真的取决于你需要什么。

如果需要回收存储 space 而无需等待所有打开文件的进程关闭它或死亡,调用 truncate -s 0 FILENAME 释放数据,然后删除文件一个普通的 rm FILENAME。但是,这两个操作不是原子操作,已经打开文件的程序可能会以各种方式失败(包括分段错误,如果它们已将文件的某些部分映射到内存中)。但是,鉴于您打算同时删除文件及其内容,因此没有通用的方法来防止依赖于内容的程序失败。

如果您的目标是在删除后无法通过取证分析检索数据,请使用 shred 等命令,该命令专门用于在删除文件之前覆盖数据。并且 - 在相信这些工具能够可靠地销毁敏感数据之前,请密切注意它们的局限性。

如果正如您的评论所暗示的那样,您在 OSX 上,您可以使用 srm 执行“安全删除”。

SRM(1)                                                                  SRM(1)

NAME
       srm - securely remove files or directories

SYNOPSIS
       srm [OPTION]... FILE...

DESCRIPTION
       srm  removes each specified file by overwriting, renaming, and truncat-
       ing it before unlinking. This prevents other people from undeleting  or
       recovering any information about the file from the command line.

联机帮助页是 here

或者,shredGNU coreutils 中可用,您可以使用 homebrew 在 OS X 上轻松安装它,使用命令

brew install coreutils