*nix下怎么快速得到一个一个很大目录的体积

2013-11-19 12:40:18 +08:00
 arkilis
环境:

很多很多很多的文件,很深很深的目录,客户的主机就是这样的,没法修改.总共体积在200T左右.

我试过很多办法:

du -sh [dir]

或者用自带的 Disk Analysis

一般都要花很久. 有没有稍微有效的方法? 谢谢xxx
2757 次点击
所在节点    问与答
10 条回复
yushiro
2013-11-19 12:44:57 +08:00
那就先求总容量, 再减去其他目录的容量。
df 减去 du 其他目录
lch21
2013-11-19 13:05:28 +08:00
自己写个程序,多线程遍历
halfbloodrock
2013-11-19 13:12:19 +08:00
指定下层级试试 du -sh dir/*/*,不会很快,但是应该比du整个目录快。。

du和磁盘速度有关。。。。200T 应该是存储吧,看看存储上有没有直接看磁盘使用情况的方式。
efi
2013-11-19 13:17:31 +08:00
我猜是挂了nfs在里面吧?du --one-file-system
其他文件系统用df或者肯定有文件系统自带工具。
pyKun
2013-11-19 13:26:31 +08:00
理论上不行吧

@yushiro
df 和 du的算法不一样,求出来的结果不能用于加减法

@arkilis
df的结果是“声明空间的大小” 楼主你应该需要的是这样的结果,而不是du“实际占用的大小”。另一方面,如果想知道某些文件大小,系统需要找到他们中每个文件的大小,这些值是存在inode上的,而inode和你的目录关系没有直接联系。所以结合你自己的需求从df一个磁盘来想办法吧,按理说数据规划的时候是要考虑磁盘的使用情况的,比如a类数据都放在m磁盘上,m磁盘上也只有a类数据。当然如果是分布式存储就没这样事,一般会有个接口告诉你用了多少空间了已经
arkilis
2013-11-19 13:29:44 +08:00
@efi 不知道是不是nfs, 也没有相应的工具

@lch21 多线程太吃资源
reusFork
2013-11-19 17:15:42 +08:00
如果是机械磁盘,多线程有可能反而降低速度
9hills
2013-11-19 17:52:46 +08:00
瓶颈在IO,多线程也没有帮助的

如果你需要实时的一个输出,建议你做个cron任务,定时运行下cache起来。。
clino
2013-11-19 21:21:50 +08:00
我以前问过这种问题,比较靠谱的答案是如果用上 quota 的话可以很快得出来
否则貌似没有快的办法
cax0ch
2013-11-20 18:13:35 +08:00
用排除把,混合使用df和du

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/89791

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX