2011-12-14 10 views
5

Có một Gem hoặc phương tiện xóa an toàn một tệp trong Ruby không? Tôi muốn tránh các chương trình bên ngoài có thể không có mặt trên hệ thống.Làm cách nào để xóa an toàn tệp?

Bằng cách "xóa an toàn", tôi đề cập đến việc ghi đè nội dung tệp.

Trả lời

3

Nếu bạn đang ở trên * nix, một cách khá tốt là nên chỉ gọi xóa sạch sử dụng exec/open3/Open4:

`shred -fxuz #{filename}` 

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

Kiểm tra bài này tương tự:

Writing a file shredder in python or ruby?

+1

_ "Tôi muốn tránh các chương trình bên ngoài có thể không có trên hệ thống." _ Tôi cho rằng điều đó có nghĩa là không thể giả định hệ điều hành nào được sử dụng, nhưng mong muốn chạy bất cứ nơi nào Ruby chạy. – Phrogz

2

chỉ

  1. mở file
  2. viết một số rác ít nhất là trong khoản tiền tương đương kích thước tập tin hiện tại
  3. flush()close()
  4. lặp lại N lần, trộn rác với zero và 0xff 's trên khác nhau đi
+0

Tại sao không hiển thị mẫu mã? –

3

Một cái gì đó như thế này sẽ giúp bạn bắt đầu:

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

Nó sẽ giúp bạn có được clo se.

Để hiểu rõ hơn, bạn cũng có thể sử dụng 0xaa0x55 để xen kẽ 0 và 1 bit trong byte. Random.rand(0xff) sẽ cung cấp cho bạn một giá trị ngẫu nhiên từ 0 đến 255.