どのフォルダが急速にスペースを消費しているかを見つけるにはどうすればいいですか?

どのフォルダが急速にスペースを消費しているかを見つけるにはどうすればいいですか?

私は Linux サーバーを実行しており、このサーバーを samba 共有ドライブとして使用しています。昨日から突然、共有ドライブの 1 つのサイズが増加し始めました (10 分ごとに約 100 MB)。この共有ドライブにはフォルダーとサブフォルダーが多すぎます。現在、共有ドライブの容量が不足しています。

どのフォルダーが増加しているかを見つける方法を教えてください。共有ドライブのサブディレクトリのサイズを取得するために、以下のコマンドを試しました。ただし、出力を比較する必要があり、運が悪ければ見つけるのに時間がかかりすぎます。

du -sh --maxdepth=1  

このファイル システムでデータ トランザクションを見つける他の方法はありますか?

答え1

以下のコマンドを使用して、最近変更されたファイルを探します。FOLDER 内で過去 10 分間に変更されたファイルが表示されます。-mmin -10 パラメータを増やすと、FOLDER が時間の経過とともにどのように変更されたかを確認できます。男が見つけたそして探す-m時間そして-んんん詳細は以下をご覧ください:

sudo find FOLDER -xdev -type f -mmin -10 -ls

もう 1 つの状況は、削除されたファイルがまだディスク領域を占有していて、プロセスがまだそのファイルを使用しているために回復されていない場合です。この場合、削除されたファイルを使用しているプロセスを特定し、そのプロセスを終了して領域を回復します。

sudo lsof | grep deleted

サイズを調べてもここでは役に立ちません。小さなファイルの多くは、大きなファイルと同じかそれ以上のスペースを占める可能性があるからです。inode 番号も確認してください。また、FOLDER 内のすべてのフォルダーのサイズを取得するには、次のようにします。

sudo find FOLDER -xdev -type d | xargs -I DIR du -sm DIR | sort -nk1

答え2

iotopプロセスによる I/O 使用量 (つまり、どの上位プロセスがディスクを使用しているか) を表示するツールを試すことができます。これにより、どのプロセスがスペースを消費しているかを追跡できます。別の方法としては、ディレクトリの変更を監視できるinotify(の一部) を使用する方法があります。inotify-tools

duあるいは簡単な方法は、次のように使用することです。

次のエイリアスを定義します。

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

次に、疑わしいフォルダーに移動して を実行し、big現在のディレクトリ内の最大のファイルとディレクトリを表示します。または を実行して、big-files現在のフォルダー内の最大のファイルを再帰的に表示します。

注意: OSX/BSD で適切に動作させるには (sortがないため-h)、sortから をインストールするcoreutilsか、-hからを削除して代わりにlsを使用しますsort -nr

答え3

私は通常、ncduディスク領域の使用状況を調べるために使用します。フォルダーがどんどん大きくなってもシステムや ncdu スキャンがブロックされない場合は、どのフォルダーが異常に大きいかを調べることで見つけられるはずです。

関連情報