在NFS上对文件树进行最快速的安全检查

我目前在NFSnetworking文件夹中使用以下方式的性能非常差:

time find . | while read f; do test -L "$f" && f=$(readlink -m $f); grp="$(stat -c %G $f)"; perm="$(stat -c %A $f)"; done 

问题1)在循环内使用variablesgrp和perm检查权限。 有没有办法降低通过networking进行这种检查的磁盘I / O数量(例如,使用find一次性读取所有元数据)?

问题2)似乎NFS没有很好地调整,通过SSHFS的类似的networking链接上的相同的操作只占三分之一的时间。 所有参数都是自动协商的。 有什么build议么?

您的线路正在为每个文件执行三个呼叫; 一个stat +parsing输出就足够了。 对于初学者来说,重新devise你的脚本只需要stat -c "%n %G %A"来调用stat一次…如果你需要帮助,请给我们留言。

我在过去一小时内find的最快解决scheme是:

 failed=$(find -L . -printf "%p %g %M\n" | awk '{ if ($2 != "XYZ"){ printf $1; exit 1 }; if ( substr( $3, 9, 1 ) != "-" ) { printf $1; exit 2 } }') ret=$? test ! $ret -eq 0 && echo "Error with file $failed" 

其中检查一些组的所有者和权限为例。 这个版本只使用find而不是stat和后面的符号链接至less要快100倍。