文件系统
2024年9月2日大约 4 分钟
磁盘管理工具
[1] dust : 使用 Rust 开发的命令行工具,查看给定目录的磁盘空间使用情况,x-cmd 也引入了 dua,有兴趣的读者可以进行参考。
[2] gdu: 使用 Go 开发的磁盘使用分析器。同样是以交互模式为主,提供可定制和跨平台的特点。x-cmd 也引入了 gdu,有兴趣的读者可以进行参考
[3] ncdu: 使用 Zig (1.*版本使用 C 语言) 开发的一个磁盘使用情况分析工具,可以在终端中以图形的方式直观展示每个文件磁盘使用情况,进而可以直接进行管理操作,在定位大文件占用的场景中非常实用,x-cmd 也引入了 ncdu,有兴趣的读者可以进行参考。
dust
# 常见使用
dust -bd 1
dust 目录 -bd 1
# 参数:
Usage: dust
Usage: dust <dir>
Usage: dust <dir> <another_dir> <and_more>
Usage: dust -p (full-path - Show fullpath of the subdirectories) # 显示子目录完整路径
Usage: dust -s (apparent-size - shows the length of the file as opposed to the amount of disk space it uses)
Usage: dust -n 30 (Shows 30 directories instead of the default [default is terminal height])
Usage: dust -d 3 (Shows 3 levels of subdirectories) # 显示目录层级
Usage: dust -D (Show only directories (eg dust -D))
Usage: dust -F (Show only files - finds your largest files)
Usage: dust -r (reverse order of output) # 排序
Usage: dust -o si/b/kb/kib/mb/mib/gb/gib (si - prints sizes in powers of 1000. Others print size in that format).
Usage: dust -X ignore (ignore all files and directories with the name 'ignore') # 忽略目录
Usage: dust -x (Only show directories on the same filesystem)
Usage: dust -b (Do not show percentages or draw ASCII bars)
Usage: dust -B (--bars-on-right - Percent bars moved to right side of screen)
Usage: dust -i (Do not show hidden files)
Usage: dust -c (No colors [monochrome])
Usage: dust -C (Force colors)
Usage: dust -f (Count files instead of diskspace)
Usage: dust -t (Group by filetype)
Usage: dust -z 10M (min-size, Only include files larger than 10M)
Usage: dust -e regex (Only include files matching this regex (eg dust -e "\.png$" would match png files))
Usage: dust -v regex (Exclude files matching this regex (eg dust -v "\.png$" would ignore png files))
Usage: dust -L (dereference-links - Treat sym links as directories and go into them)
Usage: dust -P (Disable the progress indicator)
Usage: dust -R (For screen readers. Removes bars/symbols. Adds new column: depth level. (May want to use -p for full path too))
Usage: dust -S (Custom Stack size - Use if you see: 'fatal runtime error: stack overflow' (default allocation: low memory=1048576, high memory=1073741824)"),
Usage: dust --skip-total (No total row will be displayed)
Usage: dust -z 40000/30MB/20kib (Exclude output files/directories below size 40000 bytes / 30MB / 20KiB)
Usage: dust -j (Prints JSON representation of directories, try: dust -j | jq)
Usage: dust --files0-from=FILE (Reads null-terminated file paths from FILE); If FILE is - then read from stdin
du命令
du命令作用是估计文件系统的磁盘已使用量,常用于查看文件或目录所占磁盘容量。 du命令与df命令不同,df命令是统计磁盘使用情况,详见linux命令详解之df命令。 du命令会直接到文件系统内查找所有文件数据,所以命令执行时会耗费一点儿时间。 在默认情况下,输出结果大小是以KB为单位的。如果想以MB为单位,使用-m参数即可,如果只想知道目录占了多少容量,使用-s参数即可。
du -sh
du命令语法
du [选项] [文件或目录名称]
#参数:
-a:--all, 列出所有的文件和目录容量大小而不仅仅列出目录容量大小,默认情况只是统计目录的容量大小,参考示例1。
-B:--block-size=SIZE,指定单位大小。
-b:--bytes,以字节为单位列出文件和目录的容量大小。
-c:--total,除了列出文件和目录的容量大小外,列出总的容量大小,参考示例2。
-h:--human-readable,以人们易读的方式(KB,MB,GB)显示容量大小,参考示例3。
--si:和-h参数类似,但是单位换算时是以1000进行换算,而不是1024。
-k:和--block-size=1k类似,以KB为单位。
-m:和--block-size=1m类似,以MB为单位。
-s:--summarize,仅列出总量,而不列出每个目录和文件的大小,参考示例4。
-S:--separate-dirs,和-s参数类似,但是统计时不包含子目录的容量大小。
--max-depth=N:类似于默认情况的du,但是,递归显示时的递归深度小于等于N。如果--max-depth=0,就相当于-s参数,只统计总量而已,参考示例4。如果--max-depth=1,就相当于du -s 目录/*,参考示例5。