在 Ruby 中是否有安全擦除文件的 Gem 或方法?我想避免系统上可能不存在的外部程序。
通过“安全擦除”,我指的是覆盖文件内容。
这样的事情会让你开始:
#!/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
它应该让你接近。
为了更彻底,您还可以在字节中使用0xaa
and0x55
来交替使用 0 和 1 位。Random.rand(0xff)
会给你一个从 0 到 255 的随机值。
如果你在 *nix 上,一个很好的方法是使用 exec/open3/open4 调用 shred:
`shred -fxuz #{filename}`
http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html
检查这个类似的帖子:
只是
flush()
和close()
0xff
' 混合在不同的通道上