私たちは進行中のプロジェクトをかなり小さい(〜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
ディレクトリのサイズとすべての内容を印刷します。
実際に問題を解決するには、次のものを使用できます。ユーザー(またはグループ)クォータ。これにより、各ユーザー/グループが占めるスペースの詳細なレポートを取得し、使用できるスペースに厳しい制限を設定できます。