linux中磁盘管理是运维工程师需要进场做的重要工作,目前磁盘分析工具主要使用du命令,磁盘数据拷贝使用cp/scp或者rsync这类工具,但是对于海量磁盘数据的管理这些工具很难满足运维需求,所以今天就介绍几个磁盘管理工具。
1.磁盘统计工具gdu(Go Disk Usage)
gdu是一个用Go语言编写的高性能磁盘使用情况分析器。它针对SSD和现代硬件进行了优化,支持并行处理,因此在大容量文件系统上扫描速度非常快,在面对海量磁盘数据的时候我们一般使用du命令会卡住或者很久才能打印统计结果,但是使用gdu就能更快的将磁盘信息进行统计,极大的提高了运维管理磁盘的效率接下来我们进行安装和了解运行命令和参数
wget https://github.com/dundee/gdu/releases/latest/download/gdu_linux_amd64.tgz
tar -zxvf gdu_linux_amd64.tgz
sudo cp gdu_linux_amd64 /usr/local/bin/gdu
gdu -v
Version: v5.32.0
Built time: Sat Nov 22 12:00:38 PM CET 2025
Built user: dundee我们来看下帮助提示
gdu -h
用 Go 语言编写的快速磁盘使用情况分析工具。
Gdu 主要针对 SSD 硬盘设计,能够充分发挥并行处理的优势。
不过,它在 HDD 硬盘上也能运行,但性能提升幅度没有那么大。
用法:
gdu [要扫描的目录] [标志]
标志:
--config-file string 从文件读取配置(默认为 $HOME/.gdu.yaml)
-g, --const-gc 在分析期间启用内存垃圾回收,级别由 GOGC 设置为常量
--enable-profiling 启用性能数据收集,并通过 http://localhost:6060/debug/pprof/ 提供
-L, --follow-symlinks 对文件的符号链接进行跟踪,即显示符号链接指向的文件的大小(不跟踪指向目录的符号链接)
-h, --help 显示 gdu 的帮助信息
-i, --ignore-dirs strings 要忽略的路径(用逗号分隔)。可以是绝对路径,也可以是相对于当前目录的路径(默认为[/proc,/dev,/sys,/run])
-I, --ignore-dirs-pattern strings 要忽略的路径模式(用逗号分 --ignore-from string 从文件读取要忽略的路径模式
-f, --input-file string 从 JSON 文件导入分析结果
-l, --log-file string 日志文件路径(默认为“/dev/null”)
-m, --max-cores int 设置 Gdu 最大使用的内核数。2 个内核可用(默认为 2)
--mouse 使用 --no-color 不使用彩色输出
-x, --no-cross 不跨越文件系统边界
--no-delete 不允许删除
-H, --no-hidden 忽略隐藏目录(以点开头)
--no-prefix 在非交互模式下显示原始数字大小,不带任何前缀(SI 或二进制)
-p, --no-progress 在非交互模式下不显示进度
--no-spawn-shell 不允许启动 shell
-u, --no-unicode 不使用 Unicode 符号(用于大小条形图)
-n, --non-interactive 不在交互模式下运行
-o, --output-file string 将所有信息以 JSON 格式导出到文件
-r, --read-from-storage 从持久键值存储中读取分析数据
--reverse-sort 在非交互模式下反转排序顺序(从小到大)
--sequential 使用顺序扫描(适用于旋转硬盘)
-A, --show-annexed-size 如果文件未在本地存在,则使用 git-annex 文件的表观大小(实际使用量为零)
-a, --show-apparent-size 显示表观大小-d, --show-disks 显示所有已挂载的磁盘
-C, --show-item-count 显示目录中的项目数量
-M, --show-mtime 显示目录中项目的最新修改 --show-relative-size 显示相对大小
--si 使用十进制 SI 前缀(kB、MB、GB)显示大小,而非二进制前缀(KiB、MiB、GiB)
--storage-path string 持久键值存储目录的路径(默认值为“/tmp/badger”)
-s, --summarize 在非交互模式下仅显示总计
-t, --top int 在非交互模式下仅显示最大的 X 个文件
--use-storage 使用持久键值存储进行分析数据(实验性)
-v, --version 显示版本
--write-config 将当前配置写入文件(默认为 $HOME/.gdu.yaml)例如我们需要统计目录下的文件数量和大小
gdu -C /data可以使用非交付命令直接返回结果
gdu -n /data
11.6 GiB /share
567.2 MiB /blog
465.4 MiB /backup
106.2 MiB /logs
64.0 KiB /vpn可以使用-i参数忽略某些目录
gdu -ni /data/logs,/data/vpn /data
11.6 GiB /share
567.2 MiB /blog
465.4 MiB /backup其他参数可以自行再去验证,就这里就不列举每个参数的使用方法了。
2.磁盘统计工具ncdu(NCurses Disk Usage)
ncdu是一个基于curses库的交互式磁盘使用情况分析工具,它提供了比 du 更直观、更友好的界面,并且扫描速度通常更快。这个工具可以直接进行在线安装
sudo apt install ncdu我们来看下帮助提示
ncdu -h
ncdu [选项] [目录]
-h, --help 显示此帮助信息
-q 安静模式,刷新间隔 2 秒
-v, -V, --version 显示版本
-x 同一文件系统
-e 启用扩展信息
-r 只读
-o FILE 将扫描的目录导出到 FILE
-f FILE 从 FILE 导入扫描的目录
-0, -1, -2 扫描时使用的用户界面(0=无,2=完整 ncurses)
--si 使用以 10 为基数(SI)的前缀,而非以 2 为基数
--exclude PATTERN 排除匹配 PATTERN 的文件
-X, --exclude-from FILE 排除匹配 FILE 中任何模式的 --follow-symlinks 跟随符号链接(不包括目录)
--exclude-caches 排除包含 CACHEDIR.TAG 的目录
--exclude-kernfs 排除 Linux 伪文件系统(procfs、sysfs、cgroup 等)
--confirm-quit 退出 ncdu 时确认
--color SCHEME 设置颜色方案(off/dark)一般没啥特别的参数,基本就直接执行使用,如果有些需求可以查看参数帮助
3.磁盘数据拷贝工具rclone
Rclone是一个用于管理云存储上的文件的命令行程序。它是云供应商web存储接口的一个功能丰富的替代方案。超过40种云存储产品支持rclone,包括S3对象存储、商业和消费者文件存储服务以及标准传输协议。Rclone具有与unix命令rsync、cp、mv、mount、ls、ncdu、tree、rm和cat相当的强大云功能。Rclone熟悉的语法包括shell管道支持和--干运行保护。它在命令行、脚本或通过其API使用。
我们来看看如何安装
wget https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cp rclone-*linux-amd64/rclone /usr/local/bin/安装完成以后我们可以使用rclone -h来看看命令参数,一般我们使用rclone sync命令,可以使用rclone sync -h查看参数帮助,由于参数太多我们只列举一些常用的参数来学习下
| 参数 | 说明 | 备注 |
|---|---|---|
--size-only | 仅根据大小进行跳转,而不依据修改时间或校验和。 | 这个和--checksum选择其中一个即可 |
-c, --checksum | 检查是否有尺寸和校验码的变化(如果有,则进行检查;否则,仅检查尺寸) | 这个和--size-only选择其中一个即可 |
-P,--progress | 查看实时转换统计 | |
| --transfers=N | 并行文件数,默认为4。 | |
| --ignore-errors | 跳过错误 | |
| --exclude-from | 排除文件或目录列表来自某个文件指定 | |
| --include-from | 包含文件或目录来自某个文件指定 | |
| --exclude | 排除文件或目录 | |
| --include | 包含文件或目录 |
用法如下:
rclone copy -v --size-only -P --transfers=32 /src /dst
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/1164
评论列表