duc
是一个快速查询磁盘使用情况的可视化工具。它支持的操作系统范围比较广泛,几乎支持所有的类 Unix/Linux 操作系统,通过建立索引、检查、可视化展示系统的磁盘。由于它事先将你的磁盘使用情况存储在数据库中,因此当你查询时几乎感知不到有任何的延迟。
与其它相似工具相比,它可以正常工作在超大规模的文件系统上。实验测试验证 duc
工作在 PB 级别的磁盘上,毫无压力。
此外,它包含多种常用的用户交互界面,并支持使用各类数据库。它所支持的用户交互界面(UI)如下:
-
CLI 命令行界面; -
Ncurses 终端界面; -
X Window GUI -
OpenGL GUI
支持的数据库格式有如下:
-
Tokyocabinet, -
Leveldb, -
Sqlite3.
在默认情况下,Duc
使用的后台数据库为Tokyocabinet 。
如何安装 Duc 工具
如果你使用的是 Debian 系统或是由 Debian 衍生而来的各种发行版系统,一条命令就能搞定安装,如下:
$ sudo apt-get install duc
如果你使用的是其他系统就需要使用源码包进行安装了,(刚登录github查了一下目前最新版本为1.4.5-rc1,最新版本可以自行下载 https://github.com/zevv/duc/releases)
$ wget https://github.com/zevv/duc/releases/download/1.4.4/duc-1.4.4.tar.gz
然后再一次执行下列命令去编译和安装:
$ tar -xzf duc-1.4.4.tar.gz
$ cd duc-1.4.4
$ ./configure
$ make
$ sudo make install
如何使用 Duc 工具
duc
工具常用命令:
$ duc
如果你不明白命令的含义,可使用 duc help
查看 duc
的常规选项及其子命令:
$ duc help
当然你也可以添加子选项来查看 duc
的特定的子命令:
$ duc help
如果你嫌麻烦,你可以使用 --all
参数,查看所有命令及其选项
$ duc help --all
如果以上你已经全部 get 了,那下面就来试试身手吧!
1. 创建Index
在使用 duc
前,你需要为你的磁盘上的文件系统,创建一个索引(如同 SQL 中的 CREATE INDEX
),直接使用 duc index
命令即可。
如:你想为你的 /home 目录创建索引:
$ duc index /home
执行以上命令会产生如下效果:
① 会在你的 /home 目录创建索引;
② 将创建的索引保存在 $HOME/.duc.db
文件里。
如果后续你在该目录下又创建了新文件,那么只需再次运行上述命令即可更新索引。
2. 查询数据库Index
duc
包含了多种子命令用来查询及浏览索引。如果你需要查看可用索引列表,请执行:
$ duc info
命令结果如下:
Date Time Files Dirs Size Path
2020-11-05 21:41:05 6.5K 405 664.8M /home
以上结果表明:你已经为你的 /home
目录创建了索引。
此时,如果你想列出当前所在目录下的所有文件和其子目录,可以执行:
$ duc ls
如果你又想列出某一个特定目录下的文件及目录,如:/home/alvin/Downloads
,只需在后面添加具体的路径即可:
$ duc ls /home/alvin/Downloads
如果你对某个特定子命令使用方法有疑问,可以参考他的帮助文档。比如你想知道 ls
子命令的使用方法,可以执行:
$ duc help ls
3. 可视化磁盘使率
以上你只是在命令行界面了解磁盘的使用情况,如果你想把数据展示给老板看,显然使用命令行是不行滴,还好Duc能给你解决。Duc的魅力就在于能够使用图形界面展示次哦按的使用率。
比如你要显示 /home/alvin
的使用情况,请执行:
$ duc ls -Fg /home/alvin
输出结果如下:
如你所愿,ls
子命令查询并列出了特定目录下的所有文件及目录,并用一个带 +
号图表显示出来。
-F
:表示将文件类型指示符(one of */)附加到条目,-g
:表示用于绘制各个条目的相对大小的图形。
如果后面不指定目录,默认将显示当前目录的使用率。
同样你也可以使用 -R
以树状结构显示磁盘使用率:
$ duc ls -R /home/alvin
如果你想浏览文件,只需执行 duc ui
命令调出 ncurses
终端即可:
$ duc ui /home/alvin
如果你对 duc
还有其他想法,你还能执行 duc gui
调出 graphical (X11) 来查看你的文件系统:
$ duc gui /home/alvin
如果你已经 get 到了上面所有的 feature,但你还不满足。那我没有什么合适的办法。剩下的只能让作者来满足你的欲望了,执行 man duc
,你将得到他:
$ man duc