web-dev-qa-db-ja.com

bashでオーバーヘッドの少ないディスク使用量を確認するにはどうすればよいですか?

du -csh /

上記の計算には膨大な時間がかかりますが、オーバーヘッドが少なく精度の低い結果を確認する方法はありますか?

[〜#〜]更新[〜#〜]

私が知りたいのは、特定のディレクトリの下の合計サイズです。

8
apache

より最適化されたバージョンduに関しては、私はそれを知りません。頭に浮かぶのは:

  1. これらのファイルをRAMディスクなどに保存します。
  2. このフォルダーとそのサブフォルダーに書き込むアプリケーションが1つだけの場合は、アプリケーションに追跡させます。
  3. これらすべてのファイルがほぼ同じサイズで、ディレクトリ間で均等に分散されている場合は、サブディレクトリの数を数え、その数にディレクトリごとのファイルを掛けてから、ファイルごとのサイズを掛けます。ディレクトリの深い構造が1つしかない場合(stat -c '%h')-2。
  4. これらすべてのファイルを特定のユーザーが所有するようにし、クォータメカニズムを使用します。
  5. 専用パーティションを使用し、dfを使用してください。仮想ファイルシステム(ループバックを介してマウントされるファイルシステム上のファイル)もこれを行うことができます。

これらすべての中で、クォータと専用パーティションのオプションがおそらく最も簡単で最も効率的です。

9
Kyle Brandt

問題は、「du」がサブツリー内のすべてのオブジェクトを列挙する必要があることです。これはメタデータを多用する操作であり、ほとんどのLinuxファイルシステムでは時間がかかります。一部のファイルシステム、NTFS、NovellのNSSは、次のようなディレクトリサイズを追跡する機能を備えていますメタデータ内これにより、この操作が大幅に高速化されます。一般に、ファイルシステムが何らかの種類のディレクトリクォータをサポートしている場合、強制のためにこのデータを内部で追跡する必要があります。サイズ変更はすべて、ディレクトリツリーからクォータポイント(NTFS)またはすべてのディレクトリ(NSS)にレプリケートされます。 )発生した場合、ディレクトリツリーのサイズを取得するのは非常に高速です。

残念ながら、du runを高速化する方法はなく、回避策があります。

  • 「du」をバッチモードで実行し、ライブではない結果でライブ
  • 新しいファイルシステムを作成し、代わりに「df」を使用します
  • ディレクトリを保持する大きなファイルを作成し、ループバックマウントしてフォーマットし、新しいマウントポイントで代わりに「df」を使用します。さらにスペースが必要な場合は、ループバックマウントをアンマウントし、ファイルを拡張して、再マウントします。
6
sysadmin1138
du -h --max-depth=1

現在の作業ディレクトリからのサイズを人間のKB/MB/GB形式で示します。

4
David Rickman

標準ツールを使用すると、合計サイズを知りたいときはいつでも、ディレクトリ内のすべてのファイルのサイズを取得する必要があります。それを行うためのおそらくより効率的な方法は、ディレクトリの現在のサイズを追跡する「ディレクトリサイズモニター」を持つことです。 (私が知っている)そのようなものはありませんが、inotifyを使用して実装できます。おそらくbash(およびinotify-tools)ですが、おそらくpythonやpyinotifyなどを使用できます。

3
Dan Andreatta

また、duの-xオプションを検討してください。

du -xh / --max-depth=1 

ルートパーティションのディスク使用量の概要のみが表示され、/ proc、/ sys、/ devなどを合計しようとはしません...

2
Jason

あなたは見つけるかもしれません gt5 役立つ。最新のdu情報を保存し、次回の実行時にそれと比較します。 links などのテキストモードブラウザを使用して出力を表示します。

ルートファイルシステムのみのディスク使用が必要な場合は、

df -h /

2
LA

いいえ。一晩実行するように設定されたcronジョブで、テキストファイルに定期的にパイプでduを実行できますか?

Windowsで多数のファイルを含むフォルダーが使用するディスク容量を測定する場合も、同様に時間がかかることに注意してください。

1
xenny

df -hはトリックを行います

0

df -kh /

これにより、使用されて利用可能なディスク容量が表示されます。

0

たぶん

df -h

serverfaultが私を人間だと考えるには、短く簡潔な答えからの余分なテキストでは不十分です。

0
deleted

そのディレクトリの下のスペースを見つけるには、/の代わりにそのスペースをリストします。ディレクトリfooおよびbarの下のスペースを見つけるには、両方をリストします。

du -csh foo bar
0
mpez0

ファイルシステムが頻繁に変更されない場合は、dnotifyを使用してディスク使用量を計算する必要があります。

0