我有一个perl脚本,可以监控多个Windows网络共享驱动器的使用情况。它目前使用cygwin df
命令监视多个网络驱动器的可用空间。我还想添加各个驱动器的用法。当我使用
du -s | grep total
命令,它永远需要。我需要查看共享驱动器的用法,因为有几个网络驱动器是从服务器上的单个驱动器共享的。因此,填充一个网络驱动器填满了所有(是的,我知道,不是最好的解决方案,不是我的选择)。
所以,我想知道是否有更快的方法来获取永远不会使用的文件夹使用。
答案 0 :(得分:3)
du -s
通过递归查询每个目录和文件的大小来工作。如果您的文件系统实现没有在某处存储此总值,则这是确定磁盘使用情况的唯一方法。因此,您应该调查您正在使用的文件系统和驱动程序,并查看是否有办法直接查询此数据。否则,你可能是SOL,并且必须花费时间来运行du
。
答案 1 :(得分:2)
1)问题可能在于它们是网络驱动器 - 在大多数情况下,本地du
的速度可以接受。您是否正在托管磁盘的确切服务器上执行du
?如果没有,尝试从不同的角度处理问题 - 在托管驱动器的每个服务器上运行代理,计算本地du
摘要,然后将总计报告给中央进程(IPC或heck,通过编写报告到同一共享文件系统上的文件中。)
2)如果其中一个驱动器占用的空间(平均)大大超过其余驱动器,则可以通过对除“最大”驱动器之外的所有驱动器执行du
进行优化,然后计算最大的一个是从df
结果中减去其他人的总和