操作场景
为节省空间和成本,您可以通过OBS管理控制台、API、SDK、OBS Browser+、obsutil方式删除无用的文件或文件夹。
本小节主要介绍如何手动删除文件或文件夹。手动和自动删除对比参见表1。
表1 删除方式
删除方式 |
使用场景 |
删除规则 |
手动删除 |
如果需要对少量或者无规律的文件进行删除时,可以选择手动方式。 |
|
自动删除 |
如果需要一次性删除桶中大量文件,或者删除一些周期性的文件。可以通过生命周期功能,定期自动删除桶中对象,提高删除效率。 |
对于并行文件系统目录,大数据场景下(目录层级深、目录下文件多)的删除,可能会因超时而删除失败,建议使用:
- hadoop 客户端(嵌套OBS客户端插件OBSA)删除目录:hadoop fs - rmr obs://{并行文件系统名}/{目录名}。
- 给目录配置生命周期,通过生命周期后台删除。
多版本控制功能对删除操作的影响
删除对象有丢失数据的风险,需要谨慎操作,而利用多版本控制功能可以降低该风险。
场景 |
删除对象的当前版本 |
删除对象的历史版本 |
未开启多版本控制功能 |
OBS将彻底删除这些对象,已删除的对象不可恢复,请谨慎操作。 |
不涉及 |
暂停多版本控制功能 |
- 如果当前版本没有删除标记且当前版本ID不为null,则当前版本会成为历史版本,系统创建ID为null的删除标记成为当前版本。
- 如果当前版本没有删除标记且当前版本ID为null,则系统创建ID为null的删除标记直接覆盖当前版本。此时,删除标记成为最新版本,被覆盖的版本数据无法恢复。
- 如果当前版本有删除标记,则不执行任何操作。
说明:
- 暂停多版本后,新上传的对象版本号为null。如果之前有空版本号的同名对象,则上传对象会覆盖该带空版本号的对象。更多多版本相关信息请参见多版本控制。
- 开启“历史版本”开关,可以查看一个对象的版本ID。
|
删除的历史版本无法恢复。 |
已开启多版本控制功能 |
- 如果当前版本没有删除标记,删除后系统会创建删除标记,当前版本会成为历史版本,删除标记成为当前版本。
- 如果当前版本有删除标记,则不执行任何操作。
说明:
- 如果想要彻底删除,需要再到“已删除对象”列表进行删除。
- 如果想要找回删除的文件,可以通过“取消删除”功能来找回。详情请参见取消删除对象。
|
删除的历史版本无法恢复。 |
使用方式
OBS支持通过控制台、API、SDK、OBS Browser+、obsutil方式删除对象或文件夹。
使用OBS控制台
- 在OBS管理控制台左侧导航栏选择“桶列表”。
- 在OBS管理控制台桶列表中,单击待操作的桶,进入“对象”页面。
- 选中待删除的文件或文件夹,并单击右侧的“更多 > 删除”。
也可以选中多个文件或文件夹,单击文件列表上方的“删除”进行批量删除。
图1 删除文件或文件夹
- 单击“确定”,确认删除文件或文件夹。
图2 删除对象
如果您的删除对象所在的OBS桶启用了多版本控制功能,那么删除的对象不会被立即删除,而是保留在“已删除对象”列表中,该对象的历史版本仍然会被保存下来且会占用存储空间,因此OBS仍然会对所有版本收取存储费用。如果您不再需要该对象,为避免删除后持续计费,请再按照以下步骤进行彻底删除。
- 对于启用了多版本控制的OBS桶,想要彻底删除文件或文件夹,还需要执行以下步骤:
- 启用“历史版本”开关。
- 勾选所有对象版本,单击搜索栏上方的“彻底删除”。
图3 彻底删除对象
- 单击弹窗中的“确定”,完成对象的彻底删除。
使用图形化工具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]
参数说明:
参数 |
约束 |
描述 |
bucket |
必选 |
桶名。 |
key |
删除单个对象时必选
批量删除对象时可选 |
待删除的对象名,或批量删除的对象名前缀。
说明:
批量删除对象时,如果该参数为空,则表示删除桶中所有的对象。
|
fr |
附加参数,删除单个对象时可选 |
删除单个对象时生成结果清单文件。 |
f |
附加参数,可选 |
强制操作,不进行询问提示。 |
versionId |
附加参数,删除单个对象时可选 |
待删除对象的版本号。 |
r |
附加参数,批量删除对象时必选 |
按指定的对象名前缀批量删除对象。
注意:
批量删除对象时,会将与前缀匹配的所有对象删除,请谨慎使用。
|
j |
附加参数,批量删除对象时可选 |
批量删除对象时的最大并发数,默认为配置文件中的defaultJobs。
|
v |
附加参数,批量删除对象时可选 |
按指定的对象名前缀批量删除多版本对象和多版本删除标记。 |
o |
附加参数,可选 |
生成结果清单文件的文件夹,命令执行完成后,会在该文件夹下生成结果清单文件(可能包含成功结果和失败结果两个文件),默认为运行obsutil命令的用户目录的子文件夹.obsutil_output。
说明:
- 结果清单文件命名规则:rm_{succeed | failed}_report_时间_TaskId.txt。
- 单个结果清单文件默认情况下最大为30MB且最大可保留的文件个数为1024,可在配置文件中通过recordMaxLogSize和recordBackups分别配置。
- 当涉及多文件/文件夹时,如需确认失败任务的具体错误信息,可参考结果清单文件夹下的失败结果清单文件"rm_failed_report_时间_TaskId.txt"及日志路径下的日志文件;
|
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 |
每次运行的唯一标识号,用于查找批量任务生成的结果清单文件。 |