我操作Synology NAS设备,该设备包含超过600个用户数据。
用户备份数据是税务会计数据。 因此,大约一个用户的文件夹有200,000个文件。
我必须向每个用户提供他们的备份数据使用信息,但由于目录和文件太多,du
命令执行时间太长。
有人能为我提供一种以更快的方式检查每个用户的磁盘使用情况的方法吗?
答案 0 :(得分:4)
没有魔力。为了收集磁盘使用情况,您必须遍历文件系统。如果您正在寻找一种在文件系统级别执行此操作的方法,那将很容易(例如df -h
)...但听起来您希望它在挂载点内的目录级别。
您可以在每个目录上并行运行作业。例如在bash中:
for D in `ls -d */`
do
du -s $D &
done
wait
但我认为你很可能受到限制。此外,如果你有很多顶级目录,这个方法可能......嗯......相当繁琐,因为它没有任何形式的最大进程数控制。
如果您安装了GNU Parallel,则可以执行以下操作:
ls -d */ | parallel du -s
......哪个好多了。 parallel
有许多很好的功能,比如对输出进行分组,管理最大进程等等。你也可以传入一些参数来调整一些(虽然,就像我之前提到的那样,你是' ll是i / o绑定,所以更多的进程并不是更好,实际上小于默认值可能更好。)
我对此的唯一另一个想法是,如果这确实是你想要做的事情,可能会使用disk quotas
。如果您想了解它,可以使用一个很好的教程here。