データサーバーでどのユーザーが最も多くのディスク容量を占めているかを確認します。

データサーバーでどのユーザーが最も多くのディスク容量を占めているかを確認します。

私たちは進行中のプロジェクトをかなり小さい(〜4 TB)データサーバーに保存することになっています。当然、ファイルがあふれ、新しくないファイルを手動で移動する必要がありました。
どのユーザーがディレクトリ内で最も多くのスペースを占有しているかを調べる簡単な(または標準のコマンドライン)方法はありますか?つまり、ディレクトリ内のすべてのファイルと各ユーザーに属するすべてのサブディレクトリのサイズを合計しますか?

編集:理想的にはシンボリックリンクに従わないことをお勧めします。

ベストアンサー1

ディスク上のすべてのユーザーのディスク使用量を表示するには、次のスクリプトを使用できます。

#! /bin/bash

DIRECTORY_TO_SCAN=/home

readarray -t user_list<<<"$(cat /etc/passwd | cut -d ':' -f 1)"

for u in "${user_list[@]}" ; do
        printf "Scanning for user: %30s" "$u"
        du -ch $(find "$DIRECTORY_TO_SCAN" -user "$u" 2>/dev/null) 2>/dev/null | sed -e '/total/!d;s/^/    /'
done

スクリプトはすべてのユーザーのリストを検索し、読み取り可能なファイルとユーザーが所有するファイルを検索し、そのファイルが使用する合計スペースを計算します。


(完全性のために、次のセクションが維持されます)

ディレクトリの合計サイズを知りたい場合は、次のコマンドを使用できますdu

du -sh directory1 directory2

ディレクトリのサイズとすべての内容を印刷します。

実際に問題を解決するには、次のものを使用できます。ユーザー(またはグループ)クォータ。これにより、各ユーザー/グループが占めるスペースの詳細なレポートを取得し、使用できるスペースに厳しい制限を設定できます。

おすすめ記事