Как я могу безопасно удалить файл?

Существует ли 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

Проверьте этот похожий пост:

Написание файлового шредера на python или ruby?

Просто

  1. открыть файл
  2. записать мусор хотя бы в количестве, равном текущему размеру файла
  3. flush() а также close()
  4. повторите N раз, смешивая мусор с нулями и 0xffНа разных проходах
Другие вопросы по тегам