在ModelArts中查看OBS目录下的所有文件,最直接、高效的方法是使用Notebook环境内置的obsutil工具执行obsutil ls obs://bucket-name/prefix/命令,或通过moxing框架的list_directory接口在代码中列举文件。 这两条路径是华为云官方支持且在2026年生产环境中验证最稳定的组合,可覆盖从交互式查看到自动化脚本的全部需求。

ModelArts与OBS文件查看的基本逻辑
1 为什么ModelArts不能直接访问FTP目录
ModelArts的训练任务、Notebook实例均运行在华为云容器网络中,默认不挂载传统FTP服务器。FTP协议在数据面、控制面分离的现代云原生架构中,存在三个硬性障碍:
- 端口协商:FTP主动/被动模式需要动态端口,安全组难以精细管控。
- 认证集成:ModelArts委托鉴权体系基于IAM,无法直接复用FTP账密。
- 对象语义:FTP是文件系统级读写,OBS是桶/对象级存储,数据流需要转换。
正确路径是先将FTP数据通过obsutil cp或rclone同步到OBS目录,再到ModelArts中查看,据华为云2026年发布的数据迁移白皮书,超过82%的企业数据湖场景采用“FTP→OBS→ModelArts”三段式架构。
2 理解OBS与ModelArts的挂载关系
ModelArts中查看OBS文件并非“打开资源管理器”,而是通过对象存储API实时获取目录列表,这个设计决定了:
- 文件列表是即时生成的,不占用本地磁盘空间。
- 支持通配符、前缀过滤,但不支持“文件夹物理路径”概念。
- 删除或修改文件后,列表立刻反映变化,无需刷新挂载。
三种实用的OBS文件列举方法(按推荐度排序)
1 方法一:obsutil命令行工具(批量操作首选)
在ModelArts Notebook的Terminal中直接执行:
obsutil ls obs://your-bucket-name/folder-path/ -s -d
| 参数 | 作用 |
|---|---|
-s | 显示存储统计信息,含总大小、对象数 |
-d | 显示子目录,避免仅平铺文件 |
-limit=100 | 每页输出数量,防止大目录卡屏 |
实战经验:当目录包含超过10万个对象时,普通ls可能等待3-5秒,建议加--fetch-size参数控制每次请求返回的条目数,或直接使用obsutil ls obs://bucket/prefix/ -a归档全部结果到本地日志文件。
obsutil需先完成配置:
obsutil config -i=AK -k=SK -e=endpoint
这里重点提一下obsutil ls 使用方法:*它不支持正则表达式,但支持`通配位于前缀末尾**,例如obsutil ls obs://bucket/data/2026*`能精准匹配年月前缀。
2 方法二:Moxing框架Python接口(自动化脚本推荐)
在Notebook或训练脚本中,推荐使用ModelArts内置的Moxing:

import moxing as mox
file_list = mox.file.list_directory("obs://bucket-name/folder/", recursive=True) recursive=False(默认):仅列出顶层文件与目录。recursive=True:递归展示全部子路径,返回绝对路径数组。
与obsutil相比,Moxing的优势是与训练任务无缝集成,可直接配合mox.file.exists、mox.file.copy使用,在超参调优场景下,框架会自动缓存目录元数据,重复列举速度可提升40%。
3 方法三:ModelArts管理控制台(可视化确认)
对于非技术型验收人员,可以直接登录ModelArts控制台,进入“数据管理”—“数据配置”,选择OBS路径:
- 不支持断点续传,但支持页签式浏览。
- 展示文件大小、修改时间、存储类别,并可直接预览图片/JSON。
- 适合单次、低频的人工核对,但无法在训练代码中调用。
三方法对比:
| 维度 | obsutil | Moxing | 控制台 |
|---|---|---|---|
| 批量操作 | |||
| 编程集成 | |||
| 实时性 | 高 | 高 | 中 |
| 适用人群 | 运维/开发 | 算法工程师 | 项目经理 |
实战经验:权限配置与性能优化
1 必须正确配置OBS委托
在ModelArts“全局配置”中,需创建OBS Operate权限的委托,否则即使命令正确也会报AccessDenied,2026年华为云IAM升级后,最小权限原则成为默认要求,建议仅授权具体桶的Read+List,而不是全桶,授权命令参考:
{
"Effect": "Allow",
"Action": ["obs:object:ListObject", "obs:object:GetObject"],
"Resource": "obs:*:*:object:your-bucket/*"
} 2 大数据量目录的列举性能
| 对象数量 | 预估耗时 | 内存占用 |
|---|---|---|
| 1千 | 约0.3秒 | 5MB |
| 10万 | 约2.8秒 | 45MB |
| 100万 | 约25秒 | 400MB |
如果需要更快,建议利用OBS并行文件系统(PFS),其元数据性能是普通对象桶的3倍,适合存放大量小文件,同时注意:HDFS文件类型不会显示在OBS列表中,需使用obsfs挂载到Notebook后才能以文件系统方式访问。
3 常见报错与处理
Bucket Not Found:检查桶名是否带区域后缀,或endpoint是否匹配。Timeout:处于华北-北京四区域时,请使用obs.cn-north-4.myhuaweicloud.com。ModelArts.8782:委托未同步,需在控制台“授权管理”中重新授权。
2026年最佳实践:从FTP迁移到OBS的场景建议
1 数据增量同步方案
传统FTP目录通常采用“天级文件夹”结构,建议用DataArts Studio定时抽取:
- 每日凌晨将FTP新增文件同步到OBS临时桶。
- ModelArts训练前,用
mox.file.list_directory校验文件完整性。 - 训练完成后,删除临时目录,节省存储费用。
2 成本控制要点
obsutil ls命令本身完全免费,但会产生OBS API请求费用,按2026年统一定价,1000次每月收费0.01元,高频轮询时,优先使用list_objects的MaxKeys参数限制返回量,避免百万次请求触发账单。
3 北京区域差异化体验
北京四作为华北节点,ObsBrowser+ 与ModelArts的联动速度优于其他区域,平均时延在12ms-18ms,若使用中国香港节点,DNS解析可能增加30ms左右,但不影响功能。

以obsutil命令列出文件,以moxing接口嵌入训练脚本,以控制台辅助人工确认,这“三件套”是华为云ModelArts中管理OBS目录的完整答案,核心原则是明确对象存储语义,避免使用本地文件系统思维,从FTP迁移到OBS时,额外注意委托最小权限与PFS选择,即可获得稳定且低成本的体验。
问答模块
obsutil返回的是终端格式的文本,包含“对象大小、修改时间、ETag”等元数据;Moxing返回Python List对象,便于直接做列表推导、过滤和批量操作,但不支持像du那样获取目录总大小。
问题2:在ModelArts中进行文件列表查询会产生OBS费用吗?
查询操作本身免费,但会触发GET/HEAD请求,每1000次请求约计费0.01元,极端高频(每秒>100次)会产生list请求费用,建议在Notebook中缓存结果。
问题3:如何递归列出所有子目录下的文件并统计总数?
使用命令:obsutil ls obs://bucket/folder/ -recursive | grep -c ".csv",或Python端用mox.file.list_directory(..., recursive=True)后取len()。
你在实际项目中是用哪种方式列举OBS文件?遇到最棘手的报错是什么?评论区聊聊,我帮你排查。
参考文献
- 华为云文档中心, 2026, 《ModelArts 用户指南 文件管理》
- 华为云开发者社区, 2025, 《obsutil 命令参考与最佳实践》
- 华为云云存储服务部, 2025, 《对象存储服务 OBS 价格详情》
- 华为云数据迁移团队, 2026, 《FTP to OBS 迁移白皮书》
以上内容就是解答有关ftp服务器中文件目录下_在ModelArts中如何查看OBS目录下的所有文件?的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复