OSS定时删除任务

2024-06-22 09:36
文章标签 删除 oss 定时 任务

本文主要是介绍OSS定时删除任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

一、工作原理

二、主要特点

三、生命周期管理

四、优点

五、Demo讲解


前言

        云存储服务提供了便捷的数据存储和管理方式,但随着存储量的增长,我们需要定期清理过期的文件以节省存储空间和维护成本。本文将介绍如何使用阿里云的对象存储(OSS)定时删除任务,来自动清理过期的文件。

一、工作原理

           OSS配置及上传看阿里云OSS文件上传和下载完整指南

OSS定时删除任务依赖于生命周期规则。生命周期规则定义了存储桶内对象的生命周期,包括对象的过期时间、删除时间等。当对象达到生命周期规则中定义的条件时,OSS会自动执行删除操作。

二、主要特点

  1. 自动化管理:通过设置生命周期规则,可以自动化地管理文件的生命周期,比如在文件存储一定时间后自动删除。
  2. 精细控制:可以根据文件的前缀、标签等属性来设置不同的规则,实现对不同类型文件的精细化管理。
  3. 成本节约:定期清理不再需要的文件,减少存储费用,优化资源利用。

三、生命周期管理

  1. 规则名称:为每条规则指定一个名称,便于管理。
  2. 应用范围:通过前缀、标签等限定规则的应用范围,比如只对某个目录或某类文件生效。
  3. 触发条件:包括过期时间、创建时间、未访问时间等条件,当对象满足这些条件时,执行相应的动作。
  4. 动作:指定在触发条件满足时执行的动作,比如删除对象、转换存储类型等。

四、优点

  • 降低存储成本:自动清理过期文件,避免不必要的存储费用。
  • 提升管理效率:减少手动清理工作的繁琐,自动化管理文件生命周期。
  • 灵活性高:支持细粒度的规则配置,能满足各种不同需求。

五、Demo讲解

我这里设置的是每天凌晨都会遍历OSS中的文件并删除超过10天的文件

package com.ctb.sf.oss;import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.*;import java.util.*;public class OSSFileCleanup {// OSS相关配置信息private static final String endpoint = ""; // OSS Endpointprivate static final String accessKeyId = ""; // Access Key IDprivate static final String accessKeySecret = ""; // Access Key Secretprivate static final String bucketName = ""; // Bucket名称// 过期天数阈值private static final int expirationDays = 10;public static void main(String[] args) {TimerTask task = new TimerTask() {@Overridepublic void run() {System.out.println("开始执行定时任务:删除超过 " + expirationDays + " 天的文件");// 创建OSS客户端OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);try {// 列举Bucket中的文件ObjectListing objectListing = ossClient.listObjects(bucketName);List<OSSObjectSummary> objectSummaries = objectListing.getObjectSummaries();System.out.println(objectSummaries);// 当前时间Date now = new Date();// 遍历文件,判断并删除过期文件for (OSSObjectSummary objectSummary : objectSummaries) {Date lastModified = objectSummary.getLastModified();long diffTime = now.getTime() - lastModified.getTime();long diffDays = diffTime / (1000 * 60 * 60 * 24); // 毫秒转换为天if (diffDays > expirationDays) {// 删除文件String key = objectSummary.getKey();ossClient.deleteObject(bucketName, key);System.out.println("已删除文件:" + key);}}System.out.println("定时任务执行完毕");} catch (Exception e) {e.printStackTrace();} finally {// 关闭OSS客户端ossClient.shutdown();}}};// 创建定时器,每天凌晨执行Timer timer = new Timer();timer.scheduleAtFixedRate(task, getTomorrowMorning(), 1000 * 60 * 60 * 24); // 每天执行一次}// 获取明天凌晨的时间private static Date getTomorrowMorning() {Calendar calendar = java.util.Calendar.getInstance();calendar.add(java.util.Calendar.DATE, 1);calendar.set(java.util.Calendar.HOUR_OF_DAY, 0);calendar.set(java.util.Calendar.MINUTE, 0);calendar.set(java.util.Calendar.SECOND, 0);calendar.set(java.util.Calendar.MILLISECOND, 0);return calendar.getTime();}
}

通过阿里云的OSS可以看到10天前的文件被清除掉

这篇关于OSS定时删除任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1083913

相关文章

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

C#实现查找并删除PDF中的空白页面

《C#实现查找并删除PDF中的空白页面》PDF文件中的空白页并不少见,因为它们有可能是作者有意留下的,也有可能是在处理文档时不小心添加的,下面我们来看看如何使用Spire.PDFfor.NET通过C#... 目录安装 Spire.PDF for .NETC# 查找并删除 PDF 文档中的空白页C# 添加与删

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

Django之定时任务django-crontab的实现

《Django之定时任务django-crontab的实现》Django可以使用第三方库如django-crontab来实现定时任务的调度,本文主要介绍了Django之定时任务django-cront... 目录crontab安装django-crontab注册应用定时时间格式定时时间示例设置定时任务@符号

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

redis过期key的删除策略介绍

《redis过期key的删除策略介绍》:本文主要介绍redis过期key的删除策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录第一种策略:被动删除第二种策略:定期删除第三种策略:强制删除关于big key的清理UNLINK命令FLUSHALL/FLUSHDB命

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin