在linux及类linux平台下删除文件都是rm命令,但rm命令并非真的空除了该数据(可能过能debugfs 、ext3grep等工具恢复)。不过一般情况下,很多的数据也不是很重要,所以不怕被人恢复出来。而对于一些安全性要求较高的数据,我们可以借助shred命令彻底从服务器上删除。

一、原理

rm删除的原理是通过释放文件占用的索引节点和数据块达到 “删除”,而shred所实现的删除,除了具有rm所谓的删除外,还通过重复复写要删除掉的文件所占用的节点和数据块。通过多次覆写达到无法恢复。

二、用法

1$ shred -u file

shred会用一些随机内容覆盖文件所在的节点和数据块,并删除文件(-u参数)。 如果想清除的更彻底一点可以加-z 参数,意思是先用随机数据填充,最后再用0填充。

1$ shred -u -z file

另外shred还可以清除整个分区或磁盘,比如想彻底清除/dev/sdb1分区的内容可以这样:

1$ shred /dev/sdb1   (注意不要加-u参数)

shred详细的用法如下:

  1. -f, –force 更改权限允许写入(如有必要)
  2. -n, –iterations=N 重写N次,默认为3次
  3. –random-source=FILE 从指定文件读取数据
  4. -s, –size=N 将文件粉碎为固定大小 (可使用后缀如K、M、C等)
  5. -u, –remove 重写后截短并移除文件
  6. -v, –verbose 显示进度
  7. -z, –zero – add 用0覆盖数据
  8. -help 显示帮助
  9. -version 显示版本信息