Как я могу безопасно удалить файл?
Существует ли Gem или способ безопасного удаления файла в Ruby? Я хотел бы избежать внешних программ, которые могут отсутствовать в системе.
Под "безопасным стиранием" я имею в виду перезапись содержимого файла.
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
Это должно приблизить вас.
Для большей тщательности вы также можете использовать 0xaa
а также 0x55
для чередования 0 и 1 битов в байте. Random.rand(0xff)
даст вам случайное значение от 0 до 255.
Если вы работаете с *nix, очень хорошим способом было бы просто вызвать shred с помощью exec / open3 / open4:
`shred -fxuz #{filename}`
http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html
Проверьте этот похожий пост:
Просто
- открыть файл
- записать мусор хотя бы в количестве, равном текущему размеру файла
flush()
а такжеclose()
- повторите N раз, смешивая мусор с нулями и
0xff
На разных проходах