2011-12-14 2 views
5

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

«secure erase» Я имею в виду перезапись содержимого файла.

ответ

3

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

`shred -fxuz #{filename}` 

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

Проверьте это аналогично сообщению:

Writing a file shredder in python or ruby?

+1

_ «Я бы хотел избежать внешних программ, которые могут отсутствовать в системе». _ Я предполагаю, что это означает, что нельзя предположить, какая ОС используется, но желательно для запуска везде, где работает Ruby. – Phrogz

2

только

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

Почему бы не показать образец кода? –

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 

Это должно получить вас clo как таковые.

Для более тщательной обработки вы также можете использовать 0xaa и 0x55 для чередования 0 и 1 бит в байте. Random.rand(0xff) даст вам случайное значение от 0 до 255.

Смежные вопросы