嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > 工具介绍:ncdu磁盘占用分析

工具介绍:ncdu磁盘占用分析

背景

磁盘空间的大小总是跟不上人民日益增长的文件存放需要。

在暂时无法扩容的情况下,就只有删掉一些文件了。为了快速回收空间,最有效的做法当然是挑大文件下手了。linux 下获取文件大小,一般是使用du命令

du -sh

即可看到文件夹占用空间大小。但du本身执行很慢,每次又只针对一个文件夹,在这种场景下反复执行来找出大文件,无疑效率低下。

ncdu 就是解决这个问题的。

安装使用

ubuntu 下可以

sudo apt-get install ncdu

如果是需要在没有sudo权限没有网络的服务器上使用,那么一种方式是将本地安装好的bin直接拷贝上去,另一种方式就是把源码拷贝上去编译生成了。

看下帮助,ncdu支持一些参数,包括排除一些文件,导出结果到文件中等。

ncdu -hncdu <options> <directory>
-h This help message -q Quiet mode, refresh interval 2 seconds -v Print version -x Same filesystem -r Read only -o FILE Export scanned directory to FILE -f FILE Import scanned directory from FILE -0,-1,-2 UI to use when scanning (0=none,2=full ncurses) --si Use base 10 (SI) prefixes instead of base 2 --exclude PATTERN Exclude files that match PATTERN -X, --exclude-from FILE Exclude files that match any pattern in FILE --exclude-caches Exclude directories containing CACHEDIR.TAG

最简单的用法就是不带参数,直接在需要分析的目录下执行ncdu, 等待ncdu扫描完毕,就会出现一个交互式的界面。

在这里可以看到每个目录的大小,使用方向键或Enter键即可进入和退出具体的目录。

比如发现某个目录占用空间很大,那么就可以一路跟下去找到罪魁祸首,找到之后确认可以删除的话,不用退出ncdu,直接选中后按d即可。

删除得差不多了,则按q退出。

示例

其他

看到另一种使用ncdu的场景是,定期扫描一次并保存到文件中,这样就可以观察到两次扫描之间的文件变化情况了。

这个想法很有意思,暂未实践,mark一下:https://github.com/lilydjwg/ncdu-diff