Как я могу безопасно удалить файл? - PullRequest
5 голосов
/ 14 декабря 2011

Существует ли Gem или способ безопасного удаления файла в Ruby?Я бы хотел избежать внешних программ, которые могут отсутствовать в системе.

Под «безопасным стиранием» я имею в виду перезапись содержимого файла.

Ответы [ 3 ]

4 голосов
/ 15 декабря 2011

Примерно так вы начнете:

#!/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.

3 голосов
/ 14 декабря 2011

Если вы используете * nix, очень хорошим способом было бы просто вызвать shred с помощью exec / open3 / open4:

`shred -fxuz #{filename}`

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

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

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

2 голосов
/ 14 декабря 2011

просто

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