如何使用Java SDK快速删除存储空间及其中的历史版本数据

如何使用Java SDK快速删除存储空间及其中的历史版本数据

更新时间:2020-09-17 09:41:38

概述

删除OSS服务中不需要的存储空间(Bucket)时,如果存储空间不为空,则存储空间无法删除,您必须先删除存储空间中的所有文件、未完成的分片文件、存在的livechannel以及多版本数据后,才能成功删除存储空间。本文是基于OSS的Java SDK来实现直接完全删除存储空间,不需要单独一项项的去确认是否开启,单独删除,可以直接通过代码进行删除,也可以直接运行JAR包来删除存储空间,同时该代码也实现了只删除旧版本数据保留最新版本数据的功能。

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

使用前提

您在删除存储空间前,请先了解以下信息:

  • 使用的代码需要以下参数:
    • endpoint:该存储空间所在的存储地域域名,注意如果使用内网域名需要在同一所在地域的ECS实例上运行。
    • accessKeyId和AccessKeySecret:需要有操作存储空间的权限。
    • bucketName:需要删除的存储空间名称。

    • action:目前有两个值,deletebucketd代表删除整个存储空间,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