当前位置:首页 > 文章列表 > 文章 > linux > Linux ncdu怎么导出目录扫描结果供离线查看

Linux ncdu怎么导出目录扫描结果供离线查看

来源:17golang原创 2026-10-13 21:16:15 0浏览 收藏

先确定:你要带走的是扫描报告,不是目录文件

在服务器上发现归档目录占用较大,希望断开连接后继续分析,可以让 ncdu 把扫描结果写入报告,再在本地使用 ncdu 打开。报告保存目录层级和大小等元数据,不携带文件正文,不能用它恢复原文件。扫描期间目录仍可能变化,因此也不应把它当成存储系统的原子快照。

本文以 ncdu 2.9 官方手册为命令基准。先记录扫描端和阅读端的版本,不要把发行版仓库里的旧版本直接当成最新版。项目入口可复制:

https://dev.yorhel.nl/ncdu
# 在两端分别执行,确认真实安装版本
ncdu --version
ncdu --help

以下使用你有权读取的 /srv/archive 作为示例;请替换为真实目录。命令是说明示例,本文没有声称在你的服务器实测过。

版本变化:小写 -o 和大写 -O 不能混用

方案版本注意事项使用理由
-o:普通 JSON官方格式文档说明此导入导出格式用于 ncdu 1.9 及以后版本;仍需考虑具体版本对新增字段的处理跨环境沟通时先选明确的非压缩格式
-O:二进制报告2.6 引入,不应交给不支持该格式的旧程序较大目录、多线程导出和低内存浏览
-c -o:Zstandard 压缩 JSON2.7 引入透明读写支持两端支持时减少报告体积

上述引入版本来自官方 2.x 变更记录。扩展名只是人的提示,不会把 JSON 变成二进制,也不会使旧阅读端突然支持压缩。升级时应同时记录格式与阅读端版本,不能仅替换文件名。

扫描元数据与三种报告载体的静态关系
图1:报告载体与阅读条件是两个不同维度。

基础写法:把 JSON 放到扫描树以外

建议给每次扫描建一个独立报告目录,并放在目标树之外。这样不会把正在变大的导出文件算进自身扫描,也减少覆盖以前结果的可能。

# 下列长选项以2.9为基准;旧版本先查本机帮助
umask 077
report_dir=$(mktemp -d /var/tmp/ncdu-report.XXXXXX) || exit 1
# 明确忽略配置,并关闭JSON压缩,报告位置不在/srv/archive内
if ncdu --ignore-config --no-compress -0 -x -o "$report_dir/archive.json" /srv/archive; then
    printf '报告位置:%s\n' "$report_dir/archive.json"
else
    printf '导出失败,请保留现场检查权限或空间\n' >&2
    exit 1
fi

这里不自动使用 sudo。授权不足时先确定是否本来就不允许读取某些目录,而不是为了凑齐报告扩大权限。-x 限定为目标目录所在文件系统;挂载在其下的其他文件系统不会计入这次范围。-0 适合非交互任务,但并不表示“安静结束就是所有目录完整”。读取失败和未纳入的挂载点都需要作为报告范围记录下来。

对于旧版本,使用本机支持的 -o 导出语法,不要照搬 --no-compress 等新选项。若需要进度,可在交互终端把 -0 换为 -1;需要观察非致命扫描错误时,2.9 手册指出 -2 的全屏扫描界面才提供相应反馈。不要把非交互定时任务硬改成全屏模式。

离线查看:传输报告文件,而非重新扫描路径

通过你已有的授权文件传输方式复制 archive.json 到阅读机,例如存为 /home/reader/reports/archive.json。读取时必须带 -f;直接执行 ncdu /srv/archive 是扫描阅读机自己的目录,不是打开服务器的旧结果。

# 阅读机:路径指向已经复制好的报告
ncdu --ignore-config -r -r -f /home/reader/reports/archive.json

2.9 的文件导入默认关闭刷新、删除和启动 shell;这里额外使用两次 -r 明确关闭删除与 shell,并忽略用户配置。不要为了“刷新报告”开启 --enable-refresh:离线报告中的同名路径不等于阅读机上的同一个对象。需要新结果时,应在原扫描端重新生成一份报告。

报告、原始文件与离线阅读环境的边界关系
图2:离线阅读依赖报告元数据,不依赖原始目录仍在线。

新格式怎么选:先照顾阅读端,再考虑体积

如果生产端和阅读端都支持 2.7 及以后相关选项,可以使用压缩 JSON。示例沿用前面同一 shell 中已创建的 report_dir;换终端执行时须自行设置为实际报告目录:

# 压缩JSON:不要与普通.json混淆
ncdu --ignore-config -0 -x -c -o "$report_dir/archive.json.zst" /srv/archive
# 阅读端支持该格式时可直接导入
ncdu --ignore-config -r -r -f "$report_dir/archive.json.zst"

大型目录且两端均支持二进制格式时,可以采用 -O,并根据机器资源选择线程数:

# 2.9示例:二进制报告,线程数是示例而非性能承诺
ncdu --ignore-config -0 -x -t 2 -O "$report_dir/archive.ncdu" /srv/archive
ncdu --ignore-config -r -r -f "$report_dir/archive.ncdu"

二进制自带压缩,适合避免大树整体载入内存;它不能用 -f - 从标准输入导入。JSON 则支持标准输入。不要凭扩展名判断能否走管道,也不建议把两个选择写成一条盲目通用的命令。

要分析所有者、权限和修改时间,可在导出与导入两端都加 -e。它不是读取文件内容的开关,代价是更多内存与报告体积;没有在导出阶段记录的扩展信息,导入时再加 -e 也无法补回来。参数细节以ncdu 官方手册为准。

迁移后的观察项与常见问题

一个可交接的报告至少应附带:扫描根目录、开始与结束时间、ncdu 版本、是否跨文件系统、排除条件、报告格式以及已知读取异常。大小展示也要说明是磁盘占用还是表观大小;比较两次报告时必须保持统计口径相同。关于 JSON 内目录和文件的字段含义,可参考官方 JSON 格式说明,不要把报告改写成自定义结构后还期待 ncdu 正常导入。

为什么服务器文件删除了,本地报告还显示?

报告不是实时查询。它反映扫描时保存的信息,后来删除、增长或移动的内容不会自动同步。重新扫描后以新报告替换分析依据即可,旧报告可按你的保留策略归档。

能导入就代表没有漏扫吗?

不能。成功解析只能说明格式可读取;权限限制、排除条件、-x 的文件系统边界以及扫描中发生的变化,都可能影响覆盖范围。观察异常标记并保存范围说明,比宣称“整盘完整”更准确。

报告能公开发给别人分析吗?

报告没有文件正文,但文件名和目录结构仍可能泄露项目、用户或业务信息。umask 077 只是限制本机新文件访问权限,不能代替传输授权与接收方权限管理。分享前应确定这些元数据允许披露。

迁移清单可以压缩成五件事:确认两端版本;选择可读格式;将报告置于扫描树之外;只读导入且不启用刷新;记录统计口径和缺失范围。满足这些边界,离线报告才是一份可解释的磁盘分析资料,而不是被误用的备份文件。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
Linux ncdu怎样限制扫描在同一文件系统内Linux ncdu怎样限制扫描在同一文件系统内
上一篇
Linux ncdu怎样限制扫描在同一文件系统内
Linux fd怎样把含空格文件名安全传给批量命令
下一篇
Linux fd怎样把含空格文件名安全传给批量命令
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    463次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    526次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    543次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    493次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    311次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码