本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
您可以通过rm
命令删除不再需要的文件(Object)、碎片(Part)或存储空间(Bucket),以免产生不必要的存储费用。
注意事项
要删除单个文件,您必须具有
oss:DeleteObject
权限;要删除目录中的所有文件,您必须具有oss:DeleteObject
和oss:ListObjects
权限;要删除指定版本的文件,您必须具有oss:DeleteObjectVersion
权限;要删除所有版本的文件,您必须具有oss:ListObjectVersions
和oss:DeleteObjectVersion
权限;要删除目录下所有版本的文件,您必须具有oss:DeleteObjectVersion
和oss:ListObjects
权限;要删除某个Object的碎片,您必须具有oss:ListMultipartUploads
和oss:AbortMultipartUpload
权限;要删除所有Object和碎片,您必须具有oss:ListMultipartUploads
、oss:AbortMultipartUpload
、oss:ListObjects
和oss:DeleteObject
权限;要删除Bucket,您必须具有oss:DeleteBucket
权限。从ossutil 1.6.16版本开始,命令行中Binary名称支持直接使用ossutil,您无需根据系统刷新Binary名称。如果您的ossutil版本低于1.6.16,则需要根据系统刷新Binary名称。更多信息,请参见命令行工具ossutil命令参考。
当您在OSS ON云盒中使用该命令时:
将配置文件中的Endpoint替换为云盒Endpoint。更多信息,请参见云盒Endpoint。
在本文已有示例的基础上添加--sign-version、--region以及--cloudbox-id选项。关于这三个选项的具体用法,请参见通用选项。
命令格式
ossutil rm oss://bucketname[/prefix]
[-r,--recursive]
[-b,--bucket]
[-m,--multipart]
[-a,--all-type]
[-f,--force]
[--include <value>]
[--exclude <value>]
[--version-id <value>]
[--all-versions]
[--payer <value>]
[--encoding-type <value>]
参数及选项说明如下:
配置项 | 说明 |
bucketname | Bucket名称。 |
prefix | Bucket下的资源、例如目录、文件等。 |
-r,--recursive | 如果指定该选项时,ossutil将删除Bucket下所有符合prefix条件的Object。如果不指定该选项,则ossutil只删除指定Object。 |
-b,--bucket | 仅在删除Bucket时使用此选项。 |
-m,--multipart | 指定操作的对象为Bucket中未完成的Multipart事件。 |
-a,--all-type | 指定操作的对象为Bucket中符合prefix条件的Object和未完成的Multipart事件。 |
-f,--force | 强制操作,不进行询问提示。 |
--include | 包含符合指定条件的所有Object。 更多信息,请参见include和exclude选项。 |
--exclude | 不包含任何符合指定条件的Object。 更多信息,请参见include和exclude选项。 |
--version-id | Object的指定版本。仅适用于已开启或暂停版本控制状态Bucket下的Object。 |
--all-versions | Object的所有版本。仅适用于已开启或暂停版本控制状态Bucket下的Object,且同一个删除示例中仅允许选择--version-id或--all-versions其中一个选项。 |
--payer | 请求的支付方式。如果希望访问指定路径下的资源产生的流量、请求次数等费用由请求者支付,请将此选项的值设置为requester。 |
--encoding-type | 对 |
删除Object
Object删除后无法恢复,请谨慎操作。
通过rm命令或者rm命令结合-r选项删除单个或多个Object时,涉及调用ListObjects(GetBucket)以及DeleteObject请求,这两类请求均产生Put类请求费用。更多信息,请参见请求费用。
如果您在删除Object时同时包含了--include和--exclude选项,可能会由于规则的执行方式产生误删除的情况,请谨慎操作。
一条规则可以包含多个include(包含)和exclude(排除)条件,且每个文件从左到右逐一运用每个规则,直至最后才能最终确定匹配的结果。当您需要使用多条规则时,建议使用先包含再排除的模式,即先指定--include,再指定--exclude。
删除示例
删除单个Object
删除examplebucket下名为exampleobject.txt文件。
ossutil rm oss://examplebucket/exampleobject.txt
删除examplebucket下与前缀test匹配的所有文件。
ossutil rm oss://examplebucket/test -r
删除examplebucket下后缀为.png的所有文件。
ossutil rm oss://examplebucket --include "*.png" -r
删除examplebucket下文件名包含abc,且后缀不是.jpg和.txt的文件。
ossutil rm oss://examplebucket --include "*abc*" --exclude "*.jpg" --exclude "*.txt" -r
删除已开启版本控制的examplebucket下exampleobject.txt的指定版本。
ossutil rm oss://examplebucket/exampleobject.txt --version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3****
有关获取Object所有版本的具体操作,请参见ls(列举账号级别下的资源)。
删除已开启版本控制的examplebucket下exampleobject.txt的所有版本。
ossutil rm oss://examplebucket/exampleobject.txt --all-versions
删除已开启版本控制的examplebucket下所有Object的所有版本。
ossutil rm oss://examplebucket --all-versions -r
返回结果
以上示例删除成功后,返回结果中将包含删除的Object个数以及完成删除操作所用时长,示例如下:
Succeed: Total 8 objects. Removed 8 objects. 0.106852(s) elapsed
删除Part
通过rm命令结合多个选项删除Part时,涉及调用ListMultipartUploads、ListParts以及AbortMultipartUpload请求。其中,ListMultipartUploads以及ListParts请求产生Get类请求费用,AbortMultipartUpload请求产生Put请求费用。更多信息,请参见请求费用。
删除示例
结合-m选项删除examplebucket下exampleobject.txt中未完成的Multipart事件所产生的Part。
ossutil rm -m oss://examplebucket/exampleobject.txt
结合-m和-r选项递归删除examplebucket下与指定前缀test匹配的所有文件中未完成的Multipart事件所产生的Part。
ossutil rm -m oss://examplebucket/test -r Do you really mean to remove recursively multipart uploadIds of oss://examplebucket/test(y or N)? y
结合-a和-r选项递归删除examplebucket下与指定前缀src匹配的所有已上传完成文件、以及未完成的Multipart事件所产生的Part。
ossutil rm oss://examplebucket/src -a -r Do you really mean to remove recursively objects and multipart uploadIds of oss://examplebucket/src(y or N)? y
返回结果
以上示例删除成功后,返回结果中将包含删除的Object数量、Part对应的UploadID数量以及完成删除操作所用时长,示例如下:
Succeed: Total 1 objects, 3 uploadIds. Removed 1 objects, 3 uploadIds. 1.922915(s) elapsed
删除Bucket
删除不包含Object或Part的examplebucket。
ossutil rm oss://examplebucket -b Do you really mean to remove the Bucket: examplebucket(y or N)? y
返回结果中包含删除的Bucket名称以及完成删除操作所用时长。
Removed Bucket: examplebucket 2.230745(s) elapsed
删除examplebucket及其包含的所有Object和Part。
警告此操作将清除Bucket中的所有数据,且删除后不可恢复。请谨慎操作。
ossutil rm oss://examplebucket -b -a -r Do you really mean to remove recursively objects and multipart uploadIds of oss://examplebucket(y or N)? y Do you really mean to remove the Bucket: examplebucket(y or N)? y
返回结果中包含删除的Object数量、Part对应的UploadID数量、Bucket名称完成删除操作所用时长。
Succeed: Total 189 objects, 37 uploadIds. Removed 189 objects, 37 uploadIds. Removed Bucket: examplebucket 9.184193(s) elapsed
通用选项
当您需要通过命令行工具ossutil切换至另一个地域的Bucket时,可以通过-e选项指定该Bucket所属的Endpoint。当您需要通过命令行工具ossutil切换至另一个阿里云账号下的Bucket时,可以通过-i选项指定该账号的AccessKey ID,并通过-k选项指定该账号的AccessKey Secret。
例如您需要删除另一个阿里云账号下,华东2(上海)地域下目标存储空间testbucket下的exampletest.png文件,命令如下:
ossutil rm oss://testbucket/exampletest.png -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA**** -k 67DLVBkH7EamOjy2W5RVAHUY9H****
关于此命令的其他通用选项的更多信息,请参见通用选项。