ファイルを安全に削除するには、os.remove(path)
の機能はディレクトリエントリのみを削除しますが、ファイルを安全に削除したい場合は、「安全な空のゴミ箱」というようなファイルをランダムに上書きしますファイル。このメソッドを使用してファイルを安全に削除する関数は何ですか?Pythonは安全にファイルを削除します
答えて
srmを使用すると、ファイルを安全に削除できます。 Pythonのos.system()関数を使用してsrmを呼び出すことができます。
ありがとう、私はあなたの答えを受け入れるでしょう。 –
いつもの理由から、 'os.system'ではなく' subprocess.check_call'を使用したいと思います。シェルを起動する際のパフォーマンスヒットやハイジャックの可能性などは必要ありません。手動で行うことを忘れてしまったり、実際にはいないときにファイルを安全に消去したと仮定するのではなく、 。 – abarnert
これは私によく役立った。ありがとう。 – chilliefiber
Pythonで非常に簡単に関数を書いて、ランダムなデータでファイルを上書きしたり、繰り返しても削除したりできます。このような何か:
import os
def secure_delete(path, passes=1):
with open(path, "ba+") as delfile:
length = delfile.tell()
for i in range(passes):
delfile.seek(0)
delfile.write(os.urandom(length))
os.remove(path)
がsrm
に砲撃は、しかし、より高速である可能性が高いです。
これはいい考えですが、 'os.urandom(n)'の代わりに 'random.seed()'を使う利点があります。 –
'os.urandom'はおそらくもっと速くなるでしょう一度に1バイト以上。すべてのランダムデータをメモリに保持する必要を避けるために、ランダムなデータをチャンク(一度に256Kから1MBまで)で生成する必要があります。おそらく 'srm'と同じくらい速いでしょう。 – kindall
これは 'srm'を使うほど安全ではなく、それほど速くないかもしれません。 Gutmanアルゴリズムは、何十年もの間、正当な理由のために標準化されてきました。また、いくつかのプラットフォームでは 'srm'は、いくつかのハードドライブに組み込まれた" Secure Erase "を利用します。 – abarnert
srm
を使用することができます。確かに、いつでも簡単にPythonで実装できます。ファイルの内容を上書きするデータについては、wikipediaを参照してください。実際のストレージ技術によっては、データパターンが大きく異なる可能性があることに注意してください。さらに、ファイルがlog-structured file systemにある場合、またはbtrfsなどのコピーオンライトの最適化を使用するファイルシステムであっても、ユーザー空間からの目標はunachievableである可能性があります。
ファイルの格納に使用されたディスク領域をマッシュアップしたら、ファイルハンドルをos.remove()
で削除します。
また、ファイル名のトレースを消去したい場合は、ディレクトリのinode構造(リニア、btree、ハッシュなど)にもよりますが、同じディレクトリに無作為に指定されたファイルをたくさん割り当てて再割り当てすることができますあなたが実際に古いファイル名を上書きすることを保証するのは非常に難しいかもしれません。
+1。しかし、いくつかのプラットフォーム/ファイルシステムでは、ユーザスペースからの安全な消去を行うことができますが、kernel/libc/fsによって提供される特別なAPIを使用することによってのみ可能です。これは 'srm'を使うことを意味しますが、Pythonで書くことは何もありません(特別なAPIを' ctypes'しない限り)。 – abarnert
一方、あなたのプラットフォーム(またはそれを持っていないプラットフォームでは、少なくとも 'srm')では' srm'を調べる価値があります。例えば、Cをまったく知っていれば、[OS X 10.8](http://www.opensource.apple.com/source/srm/srm-7/srm/src/)のソースはかなりシンプルで、 fts'(これはPythonの 'os.walk'に似ています)。そこには他のことはほとんどありません。 – abarnert
- 1. rails tmp/cache/assetsファイルを安全に削除できますか?
- 2. msbuildで安全に失効したファイルを削除する
- 3. 安全な削除オブジェクト
- 4. 複製リレーbinファイルを削除しても安全ですか?
- 5. CentOSでファイルを永続的かつ安全に削除する
- 6. Javaでファイルを安全に削除する方法
- 7. .PyCharmCE2017.1と.PyCharmCE2017.2は安全に削除できますか?
- 8. どのファイルをMinGW-w64バイナリから安全に削除できますか?
- 9. アンドロイドスタジオでプロジェクトを安全に削除するには?
- 10. 安全にATL DLLのstd :: threadを削除するには
- 11. gitリポジトリ全体からファイルを完全に削除します
- 12. NuGetScratchディレクトリを安全に削除できますか?
- 13. graphs.dbを安全に削除できますか?
- 14. Sitefinity - 孤立した動的コンテンツレコードを安全に削除する
- 15. .webmファイルはvirtualboxのために削除するのが安全ですか?
- 16. 安全な削除docker tmpフォルダ
- 17. ASP.NETメンバーシップ:安全なユーザーの削除
- 18. BZrはリビジョン(ファイルを含む)を完全に削除します
- 19. Pythonのリストから要素を安全に削除する方法
- 20. Django 1.10 - 未処理の移行ファイルを削除しても安全ですか?
- 21. オープンファイルを削除するのは安全ですか?
- 22. SQLサーバーのクラスタード・インデックスを削除しても安全ですか?
- 23. 古いバージョンのGradleを削除しても安全ですか?
- 24. ubuntuで/ root/sentを削除しても安全ですか?
- 25. IntelliJのシステムディレクトリを削除しても安全ですか?
- 26. Android Studioで.gradleフォルダを削除しても安全ですか?
- 27. 。ホームディレクトリの.itmstransporterを削除しても安全ですか? - Mac
- 28. 複製キャッシュフォルダを削除しても安全ですか?
- 29. Andengineを使って安全にスプライトを削除する
- 30. memcachedからデータを安全に削除することはできますか?
これはプログラミング言語の機能ではありません。これはファイルシステム/オペレーティングシステム/ストレージデバイスの機能です。 – Elazar
IIRCのSecure Erase Trashが実際に行うことは、すべてのファイルのリンクを解除した後、ただちにシングルパスのランダム消去を行い、バックグラウンドで標準の35パスの消去を開始することです。 – abarnert