文档

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

更新时间:
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

删除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

  • 本页导读 (1)
文档反馈