5

在 Ruby 中是否有安全擦除文件的 Gem 或方法?我想避免系统上可能不存在的外部程序。

通过“安全擦除”,我指的是覆盖文件内容。

4

3 回答 3

3

这样的事情会让你开始:

#!/usr/bin/env ruby

abort "Missing filename" if (ARGV.empty?)

ARGV.each do |filename|
  filesize = File.size(filename)
  [0x00, 0xff].each do |byte|
    File.open(filename, 'wb') do |fo|
      filesize.times { fo.print(byte.chr) }
    end
  end
end

它应该让你接近。

为了更彻底,您还可以在字节中使用0xaaand0x55来交替使用 0 和 1 位。Random.rand(0xff)会给你一个从 0 到 255 的随机值。

于 2011-12-14T20:56:16.950 回答
3

如果你在 *nix 上,一个很好的方法是使用 exec/open3/open4 调用 shred:

`shred -fxuz #{filename}`

http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html

检查这个类似的帖子:

用 python 或 ruby​​ 编写文件粉碎机?

于 2011-12-14T17:52:28.293 回答
2

只是

  1. 打开文件
  2. 至少写一些垃圾,数量等于当前文件大小
  3. flush()close()
  4. 重复 N 次,将垃圾与零和0xff' 混合在不同的通道上
于 2011-12-14T19:33:40.560 回答