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のマンページを参照してください。