3

安全のために、ファイルとディレクトリを/tmp/rmf削除するのではなく移動するbashコードがいくつかあります。

いくつかの機能を追加するために、コードを Python に移行しています。追加された機能の 1 つは、 で使用可能なサイズをチェック/tmpし、移動したディレクトリが に収まるかどうかを確認することです/tmp

空き容量の確認はos.statvfsを使用して行われますが、移動したディレクトリのディスク使用量を測定するにはどうすればよいですか?

duusing を呼び出すかsubprocess、ディレクトリ ツリーを再帰的に反復して各ファイルのサイズを合計することができます。どのアプローチが良いでしょうか?

4

2 に答える 2

0

戦略を再考した方がいいと思います。2 つの理由:

  1. ファイルを移動できるかどうかを確認し、ファイルを移動できることをアサートしてから、ファイルを移動すると、組み込みの競合状態が操作に提供されます。アサートした後、ファイルを移動する前に、大きなファイルが /tmp/ に作成されます。

  2. ファイルシステム間でファイルを移動すると、膨大なオーバーヘッドが発生します。これが、OSX で各ボリュームに独自の「ゴミ箱」ディレクトリがある理由です。ファイルを構成するブロックを移動する代わりに、既存のデータを指す新しい inode を作成するだけです。

ファイルが利用可能である必要がある期間と、ファイルの消費者への可視性を検討します。すべてがバックエンドで自動化されている場合 - ファイルの名前を変更してコンピューターや人間の消費者から「隠す」ことは、ほとんどの場合簡単であり、アトミック操作であるという追加の利点があります)

ときどきファイルシステムをスキャンして「古い」ファイルを探し、猶予期間の後にそれらを選別して rm します。ドラマはありません。また、復元するのは名前を変更するだけなので、ファイルの復元がはるかに簡単になります。

于 2013-05-25T10:39:52.560 に答える