本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
删除OSS服务中不需要的存储空间(Bucket)时,如果存储空间不为空,则存储空间无法删除,您必须先删除存储空间中的所有文件、未完成的分片文件、存在的livechannel以及多版本数据后,才能成功删除存储空间。本文是基于OSS的Java SDK来实现直接完全删除存储空间,您可以直接通过代码进行删除,也可以直接运行JAR包来删除存储空间,同时该代码也实现了只删除旧版本数据保留最新版本数据的功能。
详细信息
如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
使用前提
您在删除存储空间前,请先了解以下信息:
使用的代码需要以下参数:
endpoint:该存储空间所在的存储地域域名。如果使用内网域名,需要在同一所在地域的ECS实例上运行。
accessKeyId和accessKeySecret:需要有操作存储空间的权限。
bucketName:需要删除的存储空间名称。
action:目前有两个值,deletebucket代表删除整个存储空间,deleteversion代表删除旧版本数据保留最新版本。
prefix:前缀参数,在action为deleteversion的时候生效,标志需要删除旧版本数据的开始前缀。
JDK1.7以上,Maven依赖的pom.xml配置如下。
<dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>3.10.2</version> </dependency> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-cli/commons-cli --> <dependency> <groupId>commons-cli</groupId> <artifactId>commons-cli</artifactId> <version>1.4</version> </dependency>
可以运行的JAR包请参见ossdelete.jar。
源码下载包请参见OssVersion.zip。
解决方法
数据以及存储空间删除后无法恢复,请谨慎操作,如果数据重要,建议您先备份数据。
将JAR包下载的本地后,运行场景命令示例。
执行以下命令,需要删除整个Bucket,该Bucket可能包含有碎片数据,多版本数据,livechannel数据以及大量的存储数据。
java -jar ossdelete.jar --endpoint=http://oss-XXXXXX.com --accessKeyId=XXXXXX --accessKeySecret=XXXXXX --bucketName=XXXXXX --action=deletebucket
说明其中endpoint、accessKeyId、accessKeySecret、bucketName参数需要修改为自身存储空间的相关参数。
系统显示类似如下。
执行以下命令,只删除旧版本数据,保留Object的最新版本数据。
java -jar ossdelete.jar --endpoint=http://oss-XXXXXX.com --accessKeyId=XXXXXX --accessKeySecret=XXXXXX --bucketName=XXXXXX --action=deleteversion --prefix=test/
说明其中prefix为需要删除旧参数前缀,不设置该参数,或者是设置为空的时候,则删除修改设置的所有旧版本数据(不包括只有一个版本的Object)。
系统显示类似如下。
相关文档
适用于
对象存储OSS