ユーザー固有のファイル・スペース所有権のリスト

ユーザー固有のファイル・スペース所有権のリスト

NetAppファイラーが提供する4TB NFSファイルシステムがあります。 NetAppのクォータツールは、特定のユーザーがこのqtreeでX分のディスク容量を使用していますが、「自分の」ディレクトリにはなく、ファイルシステムのどこにでも存在できることを伝えます。だから、合理的、きちんとしたり、どちらかを見つける必要があります。

私はfind -userコマンドを実行していますが、これまで3日間実行されており、それはファイルのリストにすぎません。もう一度、ファイルごとにduを実行してファイルサイズを取得する予定です。

これをより良くするためのツールはありますか?それとも私が望む情報をより簡単に得る方法はありますか?単一のユーザーが所有するファイルのみを表示する機能を除いて、WindowsにSequoiaViewのような機能があったらと思います。

更新:これは私が実行しているコマンドです。

find * -name .snapshot -prune -o -type f -user $USER -exec ls -l {} \; > /tmp/output.txt

目的は、この生データを調べて、実際にどこにあるのかを調べるawkまたはperlの1行コードを書くことです。

答え1

NetApp固有のアプローチがない限り、クォータは一般的に使用され、許可されているなど、いくつかの数字で表されます。簡単な方法でこれを追跡します。ユーザーが1MBのファイルを削除すると、使用量から1MBを減算します。ユーザーがファイルに1MBを追加すると、使用量に1MBが追加されます。クォータ自体は、どのファイルがそのスペースを使用しているかを知りません。

ただし、使用しているfindコマンドは最適ではありません。まず、所有者を見つけるにはファイルで実行する必要がfindあります。statしたがって、findすでに次元があります。次に、exec ls {} \;効率が非常に低いです。-exec ls {} +通話数を減らすには、少なくともこの機能を使用する必要がありますls。より良い点は(見つかった場合は標準がわからない場合)です-printf。これにより、lsを完全に回避し、statすでに完了した照会を活用できます。

find … -printf '%s %p\0' # that gives null-delimited, you can use \n instead
                         # for newline-delimited

他にも多くのフラグがあります-printf。 findのマンページを参照してください。

関連情報