ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

QNAP QuTS hero NAS 共享文件夹及容量批量导出方法(生产环境实测)

QNAP QuTS hero NAS 共享文件夹及容量批量导出方法(生产环境实测) 一、背景在 QNAP QuTS hero 的存储与快照总管 → 存储/快照页面中可以看到每个共享文件夹的名称和容量例如财务部 6.00 TB 凭证资料 7.00 TB 综合资料 5.00 TB但该页面主要用于存储管理和容量展示本身没有提供将当前共享文件夹列表直接导出为 Excel/CSV 的功能。如果共享文件夹数量达到几十甚至上百个人工逐条复制显然不现实。其实页面虽然不能直接导出但这些数据并不是“只存在于页面里”。QuTS hero 底层使用ZFS共享文件夹相关信息分别可以从/etc/config/smb.conf以及 ZFS 文件系统中读取。简单来说smb.conf ↓ 获取共享文件夹名称和实际路径 df ↓ 获取该路径所在 ZFS 文件系统的总容量 两者关联 ↓ 文件夹名称 容量例如getcfg 财务部 path -f /etc/config/smb.conf得到/share/ZFS30_DATA/财务部再执行df -hP /share/ZFS30_DATA/财务部得到Filesystem Size Used Available Capacity zpool2/zfs30 6.0T 5.1T 939.0G 85%其中Size 6.0T就是 Web 页面看到的容量 6.00 TB因此可以通过 SSH 批量读取这些元数据再生成 Excel/WPS 可以打开的文件。二、示例环境本文所有 IP、账号和密码均为虚构示例。NAS IP192.0.2.195 SSH 用户nasadmin_demo SSH 密码DemoNAS2026! SSH 端口22 目标存储池zpool2实际操作时替换成自己的环境即可。三、SSH 登录 NASWindows CMDssh nasadmin_demo192.0.2.195输入密码后登录。部分 QNAP 登录后会进入Console Management输入Q然后Y退出到正常 Shell。看到类似[~] #即可。四、先验证单个共享文件夹先查询一个已知共享getcfg 财务部 path -f /etc/config/smb.conf例如/share/ZFS30_DATA/财务部再查询容量df -hP /share/ZFS30_DATA/财务部例如Filesystem Size Used Available Capacity zpool2/zfs30 6.0T 5.1T 939.0G 85%对应关系字段含义Size总容量Used已使用Available可用容量Capacity使用率本文需要导出的就是Size即共享文件夹总容量。五、批量导出共享文件夹名称和容量下面脚本只统计zpool2中的共享文件夹并排除不需要统计的系统项。OUT/share/Public/存储池2_共享文件夹容量_$(date %Y%m%d_%H%M%S).tsv printf 文件夹名称\t容量\n $OUT grep ^\[ /etc/config/smb.conf | \ sed s/^\[//;s/\]$// | \ while IFS read -r share do case $share in global|homes_used_by_pool_2) continue ;; esac path$(getcfg $share path -f /etc/config/smb.conf) case $path in /share/ZFS*_DATA/*) set -- $(df -kP $path 2/dev/null | awk NR2 {print $1,$2}) filesystem$1 size_k$2 case $filesystem in zpool2/*) size$(awk -v k$size_k BEGIN { tbk/1024/1024/1024; gbk/1024/1024; if (tb 1) printf %.2f TB, tb; else printf %.2f GB, gb; }) printf %s\t%s\n $share $size $OUT ;; esac ;; esac done echo 导出完成$OUT echo 共享文件夹数量$(($(wc -l $OUT) - 1))执行完成后例如导出完成/share/Public/存储池2_共享文件夹容量_20260927_142905.tsv 共享文件夹数量111最终内容类似文件夹名称 容量 财务部 6.00 TB 凭证资料 7.00 TB 综合资料 5.00 TB 项目资料 500.00 GB六、为什么使用 TSV而不是直接生成 XLSXNAS 本身没有必要安装 Excel 相关组件。直接生成TSV最简单也最稳定。TSV 本质就是第一列Tab第二列Excel 和 WPS 可以直接打开。打开后再另存为 → Excel 工作簿*.xlsx即可。七、下载到 Windows如果 NAS 的PublicSMB 共享可以访问\\192.0.2.195\Public直接复制文件即可。如果 SMB 没有权限不建议为了下载一个统计文件去修改生产 NAS 的共享权限。直接使用 SCPscp nasadmin_demo192.0.2.195:/share/Public/存储池2_共享文件夹容量_20260927_142905.tsv %USERPROFILE%\Desktop成功后文件会出现在 Windows 桌面。八、生产环境注意事项本方法主要执行读取 smb.conf 读取 df 文件系统元数据 生成一个几 KB 的 TSV 文件不会删除共享文件夹 修改 SMB 配置 修改 ZFS 调整容量 重启 NAS 重启服务并且不需要使用du -sh /share/* find /share ls -R /share这类可能遍历大量实际业务文件的命令。df读取的是文件系统容量元数据因此更适合生产环境容量统计。九、以后新增共享文件夹如何再次导出以后如果 NAS新增共享文件夹 共享目录扩容 调整容量不需要重新修改脚本。重新执行同一段脚本即可。因为每次都会重新读取/etc/config/smb.conf并重新获取当前 ZFS 容量。文件名中使用$(date %Y%m%d_%H%M%S)所以每次都会生成新的文件例如存储池2_共享文件夹容量_20260927_142905.tsv 存储池2_共享文件夹容量_20261027_091530.tsv不会覆盖之前的统计结果也方便后续对比新增、删除和扩容情况。十、总结QNAP QuTS hero 的 Web 页面虽然可以显示共享文件夹名称 容量但没有直接提供这一列表的 Excel/CSV 导出功能。而这些数据实际上可以分别从/etc/config/smb.conf和ZFS 文件系统容量元数据中读取。因此通过getcfg df awk即可将页面中的共享文件夹和容量批量整理出来。整个方案的核心就是不去扫描业务文件而是直接读取 QNAP 配置和 ZFS 的“账本”。对于共享目录较多的生产 NAS这种方式比人工统计更高效也方便以后重复执行。
返回列表