链接复制成功!
创建和删除文件夹
使用场景
您可以在已创建的桶中新建一个文件夹,从而更方便地对存储在OBS中的数据进行分类管理。
由于OBS是一种对象存储服务,并没有文件系统中的文件和文件夹概念。为了使用户更方便进行管理数据,OBS提供了一种方式模拟文件夹。实际上在OBS内部是通过在对象的名称中增加“/”,将该对象在OBS管理控制台或者OBS Browser+上模拟成一个文件夹的形式展现。通过API等方式列举对象,获取到的对象名就是以“/”分隔的,最后一个“/”后的内容就是对象名。如果最后一个“/”后没有内容,则表示一个文件夹路径。文件夹的层级结构深度不会影响访问对象的性能。
创建文件夹使用方式
创建文件夹有两种方式:
使用OBS控制台
- 在OBS管理控制台左侧导航栏选择“桶列表”。
- 在桶列表中,单击待操作的桶,进入“对象”页面。
- 单击“新建文件夹”,或者单击进入目标文件夹后,再单击“新建文件夹”。
- 在“文件夹名称”中输入新文件夹名称。
- 支持创建单个文件夹和多层级的文件夹。
- 任何单个斜杠(/)表示分隔并创建多层级的文件夹。
- 文件夹名称不能包含点斜杠(./)或反斜杠(\)。
- 文件夹名称不能以斜杠(/)或点(.)结尾。
- 不能包含两个以上相邻的斜杠(/)。
- 文件夹的绝对路径总长度不能超过1023字节。
- 单击“确定”。
使用API
通过API创建文件夹,本质上来说是创建了一个大小为0且对象名以“/”结尾的对象。请参见使用API上传一个大小为0,名称以“/”结尾的对象。
使用SDK
通过SDK创建文件夹,本质上来说是创建了一个大小为0且对象名以“/”结尾的对象。请参见使用SDK上传一个大小为0,名称以“/”结尾的对象。
使用图形化工具OBS Browser+
- 登录OBS Browser+。
- 单击目标桶名称进入对象管理界面,单击“新建文件夹”。
- 在对话框中输入文件夹的名称后,单击“确定”,如图1所示。
- 文件夹名称不能包含以下字符 : \:*?'<>|。
- 文件夹名称不能以英文句号(.)或斜杠(/)开头或结尾。
- 文件夹名称长度不能超过1023字节。(如果有上级目录,加上所有上级目录名长度(目录自动增加/),文件夹名总长度最大为1023字节)。例如:文件夹folder01的上级目录是folder02,文件夹名长度是按照folder02/folder01/的字节数计算的。
- 单个斜杠(/)表示分隔并创建多层级的文件夹。
如果创建文件夹时弹出拒绝访问的错误提示,则有可能是如下几种情况导致的:
- 通过桶的ACL设置功能,限制了该桶的访问权限(如:该用户无桶的写入权限)。
- 通过桶的桶策略功能,限制了该桶的访问权限(如:当前时间段不允许对桶进行写入、该用户无桶的写入权限等)。
请检查桶的ACL设置和桶策略配置,排查错误。
- 单击消息提示框中的“确定”。
使用命令行工具obsutil
命令结构:
- Windows操作系统
- 在指定桶内创建文件夹
obsutil mkdir obs://bucket/folder[/subfolder1/subfolder2] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 在本地文件系统路径中创建文件夹
obsutil mkdir folder_url [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 在指定桶内创建文件夹
- macOS/Linux操作系统
- 在指定桶内创建文件夹
./obsutil mkdir obs://bucket/folder[/subfolder1/subfolder2] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 在本地文件系统路径中创建文件夹
./obsutil mkdir folder_url [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 在指定桶内创建文件夹
运行示例:
- 以Windows操作系统为例,运行obsutil mkdir obs://bucket-test/folder1/folder2,在桶内创建文件夹。
obsutil mkdir obs://bucket-test/folder1/folder2 The bucket [bucket-test] does not support POSIX, create folder(s) step by step Create folder [obs://bucket-test/folder1/] successfully, request id [0000016979E1D23C860BB3D8E4577C5E] Create folder [obs://bucket-test/folder1/folder2] successfully, request id [0000016979E1D2B2860BB5181229C72C]
参数说明:
| 参数 | 约束 | 描述 |
|---|---|---|
| bucket | 在指定的桶内创建文件夹时必选 | 桶名。 |
| folder | 在指定的桶内创建文件夹时必选 | 桶内的文件夹路径,支持多级文件夹,以“/”分隔。 |
| folder_url | 在本地文件系统路径中创建文件夹时必选 | 本地文件系统中的文件夹路径,支持绝对路径和相对路径。 |
| bucket-cname | 附加参数,可选 | 指定桶绑定的自定义域名 说明: Util 5.7.9版本及以上支持该参数。 |
| config | 附加参数,可选 | 运行当前命令时的自定义配置文件。可支持的配置参数请参考配置参数说明。 |
| e | 附加参数,可选 | 指定终端节点。 |
| i | 附加参数,可选 | 指定用户的AK。 |
| k | 附加参数,可选 | 指定用户的SK。 |
| t | 附加参数,可选 | 指定用户的securitytoken。 |
删除文件夹
OBS支持通过管理控制台、API、SDK、OBS Browser+、obsutil方式删除文件夹。
使用OBS控制台
- 在OBS管理控制台左侧导航栏选择“桶列表”。
- 在桶列表中,单击待操作的桶,进入“对象”页面。
- 选中要删除的文件夹,然后单击搜索栏上方的“删除”。

- 删除完成后,如果列表页没有对应文件夹,则删除成功。
使用图形化工具OBS Browser+
- 登录OBS Browser+。
- 选中待配置的桶,进入文件列表。
- 右键待删除的文件或文件夹,并单击“删除”。
也可以选中多个文件或文件夹,单击文件列表上方的“更多>删除”进行批量删除。
- 选中待删除的文件或文件夹后,在消息确认框中单击“是”。
使用命令行工具obsutil
命令结构:
- Windows操作系统
- 删除单个对象
obsutil rm obs://bucket/key [-f] [-versionId=xxx] [-fr] [-o=xxx] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 批量删除对象
obsutil rm obs://bucket/[key] -r [-j=1] [-f] [-v] [-o=xxx] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 删除单个对象
- macOS/Linux操作系统
- 删除单个对象
./obsutil rm obs://bucket/key [-f] [-versionId=xxx] [-fr] [-o=xxx] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 批量删除对象
./obsutil rm obs://bucket/[key] -r [-j=1] [-f] [-v] [-o=xxx] [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
- 删除单个对象
运行示例:
- 以Windows操作系统为例,运行obsutil rm obs://bucket-test/key -f,删除bucket-test桶中名为key的单个对象。
obsutil rm obs://bucket-test/key -f Start at 2024-09-25 04:48:10.1147483 +0000 UTC Delete object [key] in the bucket [bucket-test] successfully, cost [152], request id [0000016979E1D2B2860BB5181229C72C]
- 以Windows操作系统为例,运行obsutil rm obs://bucket-test -r -f,删除bucket-test桶中所有对象。
obsutil rm obs://bucket-test -r -f Start at 2024-09-30 08:46:55.5335644 +0000 UTC [===============================================] 100.00% 21s Succeed count: 1313 Failed count: 0 Task id: 95936984-f81a-441a-bba0-1fd8254d9241
- 以Windows操作系统为例,运行obsutil rm obs://bucket-test/key -r -f,删除bucket-test桶中所有以key为前缀的对象和文件夹。
obsutil rm obs://bucket-test/key -r -f Start at 2024-09-30 08:49:09.5602115 +0000 UTC [===============================================] 100.00% 21s Succeed count: 10 Failed count: 0 Task id: 79ab59ec-7e00-4f22-8c88-465faa834125
参数说明:
| 参数 | 约束 | 描述 |
|---|---|---|
| bucket | 必选 | 桶名。 |
| key | 删除单个对象时必选 批量删除对象时可选 | 待删除的对象名,或批量删除的对象名前缀。 说明: 批量删除对象时,如果该参数为空,则表示删除桶中所有的对象。请谨慎操作。 |
| fr | 附加参数,删除单个对象时可选 | 删除单个对象时生成结果清单文件。 |
| f | 附加参数,可选 | 强制操作,不进行询问提示。请谨慎使用。 |
| versionId | 附加参数,删除单个对象时可选 删除多版本对象时必选。 | 待删除对象的版本号。 |
| r | 附加参数,批量删除对象时必选 | 按指定的对象名前缀批量删除对象。 注意: 批量删除对象时,会将与前缀匹配的所有对象删除,请谨慎使用。 |
| j | 附加参数,批量删除对象时可选 | 批量删除对象时的最大并发数,默认为配置文件中的defaultJobs。 说明: 工具会保证该值至少为1。 |
| v | 附加参数,批量删除对象时可选 | 按指定的对象名前缀批量删除多版本对象和多版本删除标记。 |
| o | 附加参数,可选 | 生成结果清单文件的文件夹,命令执行完成后,会在该文件夹下生成结果清单文件(可能包含成功结果和失败结果两个文件),默认为运行obsutil命令的用户目录的子文件夹.obsutil_output。 说明:
|
| bucket-cname | 附加参数,可选 | 指定桶绑定的自定义域名 说明: Util 5.7.9版本及以上支持该参数。 |
| config | 附加参数,可选 | 运行当前命令时的自定义配置文件。可支持的配置参数请参考配置参数说明。 |
| e | 附加参数,可选 | 指定终端节点。 |
| i | 附加参数,可选 | 指定用户的AK。 |
| k | 附加参数,可选 | 指定用户的SK。 |
| t | 附加参数,可选 | 指定用户的securitytoken。 |
响应结果:
| 字段名 | 描述 |
|---|---|
| Parallel | 请求中的-p参数。 |
| Jobs | 请求中的-j参数。 |
| Threshold | 请求中的-threshold参数。 |
| PartSize | 请求中的-ps参数。 |
| Exclude | 请求中的-exclude参数。 |
| Include | 请求中的-include参数。 |
| TimeRange | 请求中的-timeRange参数。 |
| VerifyLength | 请求中的-vlength参数。 |
| VerifyMd5 | 请求中的-vmd5参数。 |
| CheckpointDir | 请求中的-cpd参数。 |
| OutputDir | 请求中的-o参数。 |
| ArcDir | 请求中的-arcDir参数。 |
| Succeed count | 成功的任务数。 |
| Failed count | 失败的任务数。 |
| Skip count | 增量上传/下载/复制、同步上传/下载/复制跳过的任务数。 说明: 跳过的任务数也会记录到成功的任务数中。 |
| Warning count | 执行完成但包含警告的任务数。 说明:
|
| Succeed bytes | 上传/下载成功的字节数。 |
| max cost | 所有任务中的最长耗时,单位:毫秒。 |
| min cost | 所有任务中的最短耗时,单位:毫秒。 |
| average cost | 平均耗时,单位:毫秒。 |
| average tps | 平均每秒的任务完成个数。 |
| Task id | 每次运行的唯一标识号,用于查找批量任务生成的结果清单文件。 |
后续操作
您可以单击文件夹后面操作列的“更多 > 复制路径”,复制文件夹的路径。您可以将获取到路径共享给其他用户,其他用户可以找到存储对象的桶后,在搜索对象框中输入该路径值即可获取到对象。
