目录内与目录外使用 du -csh * 命令统计同一个目录的磁盘占用,差别接近 10 倍 , 这合理吗?

2021-11-19 17:40:13 +08:00
 kenshin912

内部一个 Walle 打包的服务器.

该目录是存放 yarn 打包用的 node_modules 缓存文件.

最近我注意到该目录占用一直缓慢的增长 , 觉得有点不正常.

直到我在 node_modules 这个目录内外都使用了 du -csh * 这个命令 , 发现结果如下.

#  du -csh *
...
...
2K	yallist
624K	yaml
528K	yargs
148K	yargs-parser
76K	yauzl
220K	yorkie
208K	zip-stream
16K	zwitch
336M	total

# cd ..
# du -csh *
3.0G	node_modules
3.0G	total

这也太夸张了... 然后我就看到了这个

# ls
node_modules
# du -cah --apparent-size -l -L *
......
......
98K	node_modules/vm2/lib
148	node_modules/vm2/.editorconfig
8	node_modules/vm2/.eslintignore
287	node_modules/vm2/.eslintrc.js
4.4K	node_modules/vm2/CHANGELOG.md
1.1K	node_modules/vm2/LICENSE.md
15K	node_modules/vm2/README.md
7.4K	node_modules/vm2/index.d.ts
157	node_modules/vm2/index.js
746	node_modules/vm2/package.json
127K	node_modules/vm2
424K	node_modules/.yarn-integrity
2.7G	node_modules
2.7G	total

这是 node_modules 这个目录本身 , 占用了 2.7GB 吗? 这不合理吧?

我反复思索了好一会 , 也没想明白这是为啥...

Walle 打包工具我是使用 docker-compose 启动的.

npm / jdk 以及打包目录什么的 , 我是使用 volumes 映射进容器内的.

yarn 打包之前我会通过 ln -s 把这个目录软链接到打包目录 , 打包完成后则会删除打包目录.

遂怀疑是不是磁盘空间被 docker 占用 , 但是 lsof 看了看 , 也没有. 也许我应该重启一下 docker 服务?

之前我 yarn install 的时候指定了一个 cache-folder , 并没有发生过这个问题.

但是我觉得打包太慢 , 想改进一下 , 所以把 node_modules 这个目录做了个软链接过来 , 想着应该能避免复制 node_modules 这个过程...

速度没见怎么快 , 倒是磁盘占用还出了点问题... 真尴尬...

来 V2EX 求高人指点一下

2082 次点击
所在节点    Linux
4 条回复
hingle
2021-11-19 18:12:50 +08:00
这个命令没包含当前目录下的隐藏文件
zhlxsh
2021-11-19 18:43:59 +08:00
你这个参数 du 不看隐藏文件的
du -sm .[!.]* *| sort -n
AoEiuV020
2021-11-22 10:04:09 +08:00
主要区别就在目录“.staging”一个包含了一个没包含,
kenshin912
2021-11-22 10:47:10 +08:00
@hingle #1
@zhlxsh #2
@AoEiuV020 #3

感谢 , 找到原因了 , 确实是没包含隐藏文件.
.cache 目录 2.9G
谢谢

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

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

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

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

© 2021 V2EX