精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

硬核實戰!SpringBoot + Minio 定時清理,輕松奪回海量存儲空間!

存儲 存儲架構
如果我們不對這些“過期文件”進行定期清理,不僅存儲成本會增加,還可能影響系統長期運行的可維護性。因此,本文將通過?SpringBoot + MinIO + 定時任務?的方式,實現一個自動清理歷史文件的功能。

在日常開發中,我們往往選擇 MinIO 作為項目的圖片或文件存儲服務。它不僅兼容 S3 協議,還能在本地快速搭建分布式存儲環境,方便又高效。 但隨著業務增長,存儲在 MinIO 中的圖片會呈現 指數級上漲:活動頁上傳的 Banner、用戶頭像歷史版本、報表導出的臨時文件……一段時間后,它們大多不再被使用,卻依舊占據存儲空間。

如果我們不對這些“過期文件”進行定期清理,不僅存儲成本會增加,還可能影響系統長期運行的可維護性。因此,本文將通過 SpringBoot + MinIO + 定時任務 的方式,實現一個自動清理歷史文件的功能。

最終效果:

  • 文件按日期目錄(yyyy-MM-dd/)存儲
  • 每月定時任務執行,清理掉早于指定時間的目錄
  • 自動釋放存儲空間,降低成本

項目依賴

在 pom.xml 中添加核心依賴即可:

<!-- MinIO SDK -->
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.5.1</version>
</dependency>

說明:

  • MinIO SDK:與 MinIO 服務交互,支持上傳、下載、刪除等操作
  • Spring Boot Starter:內置定時任務支持,免額外引入依賴

核心刪除邏輯

文件的目錄結構約定為:

/bucketName/yyyy-MM-dd/xxx.jpeg

也就是說,每天的文件會放到一個獨立的日期目錄下。 因此我們的目標是:刪除早于指定日期的整個目錄。

工具類 MinioUtil

項目路徑:

/src/main/java/com/icoderoad/utils/MinioUtil.java

核心方法:

方法簽名

作用

返回值

冪等性

deleteDateFoldersBefore(LocalDate endExclusive)

刪除截止日期前的所有日期目錄

實際刪除對象數

多次調用結果一致

deleteSingleFolder(String prefix)

刪除單個日期目錄下的對象

刪除數量

同上

關鍵代碼:

/**
 * 刪除早于指定日期的所有日期目錄(yyyy-MM-dd/)
 *
 * @param endExclusive 截止日期(不含)
 * @return 實際刪除的對象總數
 */
public int deleteDateFoldersBefore(LocalDate endExclusive) {
    if (endExclusive == null) {
        throw new IllegalArgumentException("指定日期不能為空");
    }
    LocalDate today = LocalDate.now();
    if (!endExclusive.isBefore(today)) {
        return 0;
    }


    int totalDeleted = 0;
    for (LocalDate d = endExclusive.minusDays(1); !d.isBefore(retainSince); d = d.minusDays(1)) {
        totalDeleted += deleteSingleFolder(d.format(DateTimeFormatter.ISO_LOCAL_DATE) + "/");
    }
    return totalDeleted;
}

刪除單個目錄;

private int deleteSingleFolder(String prefix) {
    try {
        List<DeleteObject> objects = new ArrayList<>();
        minioClient.listObjects(
                ListObjectsArgs.builder().bucket(bucketName).prefix(prefix).recursive(true).build()
        ).forEach(r -> {
            try {
                objects.add(new DeleteObject(r.get().objectName()));
            } catch (Exception ignored) {
                log.warn("文件名獲取失敗");
            }
        });


        if (objects.isEmpty()) {
            return 0;
        }


        Iterable<Result<DeleteError>> results = minioClient.removeObjects(
                RemoveObjectsArgs.builder().bucket(bucketName).objects(objects).build()
        );


        for (Result<DeleteError> res : results) {
            res.get(); // 必須觸發懶加載請求
        }
        return objects.size();
    } catch (Exception e) {
        log.warn("刪除目錄 {} 失敗: {}", prefix, e.toString());
        return 0;
    }
}

性能與容錯

  • 懶加載陷阱:listObjects 與 removeObjects 均是延遲執行,必須遍歷結果才會真正觸發請求
  • 批量刪除限制:MinIO 單次請求最多刪除 1000 個對象
  • 冪等性設計:重復刪除同一路徑不會報錯,已刪除的對象會被跳過
  • 常見錯誤處理:

NoSuchBucket → 啟動時校驗桶

AccessDenied → 確認 AK/SK 權限

SlowDown → 增加退避重試策略

單元測試

路徑:/src/test/java/com/icoderoad/MinioTest.java

@SpringBootTest
public class MinioTest {


    @Autowired
    private MinioUtil minioUtil;


    @Test
    public void testDelete() {
        int count = minioUtil.deleteDateFoldersBefore(LocalDate.of(2025, 8, 2));
        System.out.println("刪除文件數量:" + count);
    }
}

定時任務配置

啟用定時任務

在啟動類中開啟:

@SpringBootApplication
@EnableScheduling
public class StorageApplication {
    public static void main(String[] args) {
        SpringApplication.run(StorageApplication.class, args);
    }
}

定時任務類

路徑:/src/main/java/com/icoderoad/task/MinioCleanTask.java

@Component
@RequiredArgsConstructor
@Slf4j
public class MinioCleanTask {


    private final MinioUtil minioUtil;


    /**
     * 每月 1 號凌晨 3 點清理早于當天的目錄
     */
    @Scheduled(cron = "0 0 3 1 * ?")
    public void minioClean() {
        try {
            LocalDate today = LocalDate.now();
            log.info("清理任務開始,清理日期:{}", today);
            int deleteCount = minioUtil.deleteDateFoldersBefore(today);
            log.info("任務完成,共清理 {} 個文件", deleteCount);
        } catch (Exception e) {
            log.error("MinIO 清理任務失敗", e);
        }
    }
}

Cron 表達式快速回顧

表達式

含義

0 * * * * ?

每分鐘執行一次

0 */5 * * * ?

每 5 分鐘執行一次

0 0 1 * * ?

每天凌晨 1 點執行

0 0 3 1 * ?

每月 1 日凌晨 3 點執行

結論

通過 SpringBoot + MinIO + 定時任務 的組合,我們實現了一個高效的存儲清理方案:

  • 自動化:無需人工干預,定時任務定期清理
  • 可控性:基于日期前綴,刪除邏輯清晰,冪等性保證安全
  • 擴展性:可靈活配置保留日期與清理策略

這不僅幫助我們 節省了大量存儲成本,還提升了系統的長期可維護性。 對于任何依賴對象存儲的系統而言,這種清理機制都是必不可少的。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2025-09-29 09:32:32

2021-09-18 10:48:29

手機內存微信

2024-07-31 09:34:59

2021-06-25 18:42:11

云主機

2020-09-07 14:08:36

Windows 10存儲空間硬盤

2024-03-27 07:55:58

SpringRedis海量

2017-12-04 08:37:31

存儲空間NAS

2021-10-15 22:24:25

微信功能存儲

2019-04-26 15:38:34

Hadoop集群存儲

2018-06-27 14:40:50

Windows 10Windows存儲空間

2015-12-15 15:38:57

Windows 10存儲空間微軟

2013-03-04 09:55:18

大數據存儲

2012-11-06 09:31:12

2017-11-03 14:44:20

對象存儲

2022-03-16 12:49:28

IT數據存儲

2018-08-15 15:50:03

Windows 10存儲空間應用程序

2022-03-11 09:47:17

Google手機空間應用歸檔

2021-09-04 21:12:36

移動云數據安全

2021-05-19 07:59:35

VDO存儲Centos8

2020-04-27 14:17:00

iPhone SE蘋果存儲
點贊
收藏

51CTO技術棧公眾號

欧美国产日韩在线观看| 伊人久久亚洲影院| 欧美变态口味重另类| 青青草视频在线免费播放 | 国产精品毛片| 中文国产亚洲喷潮| 欧美一级大片免费看| 波多野结衣久久精品| 成人免费在线视频观看| 国产高清自拍一区| 亚洲一卡二卡在线| 99精品欧美| 久久久国产成人精品| 亚洲国产第一区| 24小时成人在线视频| 黑人欧美xxxx| 欧美在线观看视频免费| h网站视频在线观看| 国产成人a级片| 国产精品吴梦梦| 国产又色又爽又黄的| 久久网站免费观看| 亚洲欧美另类国产| 日批免费观看视频| 999色成人| 色老综合老女人久久久| 人妻av中文系列| 在线中文字幕第一页| 欧美国产精品一区二区| 鲁丝一区二区三区免费| 亚洲男人第一天堂| 免费看日韩精品| 欧美中文在线观看国产| 久久无码精品丰满人妻| 99久久久久久中文字幕一区| 国产亚洲精品久久久优势| 在线黄色免费网站| 综合中文字幕| 日韩欧美的一区| 最新国产黄色网址| 播放一区二区| 色国产精品一区在线观看| 青青青免费在线| 白白色在线观看| 亚洲卡通动漫在线| 黄色一级片网址| 国产精品实拍| 日韩毛片一二三区| 小说区视频区图片区| 在线播放麻豆| 国产精品天干天干在观线| 日韩电影大全在线观看| 国产在线一二三区| 国产色产综合产在线视频| 欧美精品一区在线| 九色在线视频| 久久久91精品国产一区二区精品 | 亚洲大型综合色站| 隔壁人妻偷人bd中字| 成年网站在线视频网站| 亚洲国产精品久久艾草纯爱| 欧美狂野激情性xxxx在线观| 日本在线视频中文有码| 亚洲成在线观看| 男女视频网站在线观看| 第一福利在线视频| 欧美性xxxx极品hd欧美风情| 免费午夜视频在线观看| 欧美男女交配| 欧美区在线观看| 免费高清视频在线观看| 亚洲综合网站| 日韩精品中文字幕视频在线| 国产精品无码久久久久久| 国产一区二区三区四区| 精品国产网站地址| 久久久久成人片免费观看蜜芽| 国产一区清纯| 日韩av片永久免费网站| 中文字幕乱码人妻无码久久 | 最新版天堂资源在线| 国产成人在线中文字幕| 亚洲午夜av电影| 99热在线观看精品| 欧美亚洲不卡| 青草成人免费视频| 夜夜狠狠擅视频| 大美女一区二区三区| 免费精品视频一区二区三区| 久久bbxx| 黄色精品在线看| 一本色道久久亚洲综合精品蜜桃| 亚洲精品一区二区三区中文字幕 | 国产欧美激情| 国产日本欧美视频| 日批免费在线观看| 国产精品污污网站在线观看| 黄色三级中文字幕| 国产一区二区三区影视| 精品国产乱码久久久久久夜甘婷婷 | 成年人黄色在线观看| a级片在线免费| 欧美日韩一区二区欧美激情 | 国产日韩一级二级三级| 无码人妻aⅴ一区二区三区日本| 日韩理论视频| 欧美xxxx老人做受| 精品在线观看一区| 国产精品丝袜xxxxxxx| 91中文精品字幕在线视频| 青青久草在线| 亚洲国产aⅴ天堂久久| 一道本在线免费视频| 老司机在线精品视频| 美女撒尿一区二区三区| 日本中文字幕在线观看视频| 成人av网站在线观看免费| 伊人久久大香线蕉午夜av| 欧美黑人粗大| 亚洲国产精品va在线看黑人 | 中国极品少妇videossexhd| 视频在线不卡免费观看| 日韩女在线观看| 蜜臀久久精品久久久久| 亚洲激情综合网| 色一情一区二区三区| 精品在线手机视频| 亚州国产精品久久久| 精品国产九九九| 成人欧美一区二区三区视频网页| 亚洲乱码国产一区三区| 免费av一区二区三区四区| 97精品久久久中文字幕免费| 丰满人妻一区二区三区四区53| 中文字幕一区二区三区精华液 | 日本女人高潮视频| 免费一区二区三区四区| 亚洲人a成www在线影院| 欧美日韩综合在线观看| 成人精品视频一区| 中国丰满熟妇xxxx性| 欧美激情三级| 欧美精品中文字幕一区| 99热这里只有精品1| 日韩美女视频一区| 韩国一区二区在线播放| 久久久久国产| 亚洲bt天天射| 黄色小说在线播放| 精品电影一区二区三区| 日韩精品成人一区| www.欧美精品一二区| 久激情内射婷内射蜜桃| 日韩av影院| 日本最新高清不卡中文字幕| 麻豆导航在线观看| 欧美在线色视频| 五月天免费网站| 精品一区二区成人精品| 肉大捧一出免费观看网站在线播放| 日韩欧美中文字幕一区二区三区| 欧美成年人视频网站欧美| 国产av无码专区亚洲av麻豆| 亚洲午夜激情av| 艳妇乳肉豪妇荡乳xxx| 亚洲综合99| 日韩电影免费观看高清完整| 婷婷久久综合九色综合99蜜桃| 久久精品视频在线| 国产综合无码一区二区色蜜蜜| 亚洲成精国产精品女| 亚洲av无码一区二区二三区| 日韩av午夜在线观看| 成年人黄色在线观看| 国产精品一线| 日韩av电影手机在线| 色网站免费在线观看| 欧美videos大乳护士334| 欧美bbbbbbbbbbbb精品| 国产日韩亚洲欧美综合| 精品人妻一区二区三| 国产日韩高清一区二区三区在线| 少妇特黄a一区二区三区| 国产精品777777在线播放| 韩国v欧美v日本v亚洲| 国产二区在线播放| 日韩欧美一级特黄在线播放| 亚洲天堂av片| 亚洲视频 欧洲视频| 三级电影在线看| 精品制服美女久久| 国产九九九九九| 99视频精品全部免费在线视频| 国产富婆一区二区三区| 成人精品高清在线视频| 欧美激情视频给我| а天堂8中文最新版在线官网| 日韩欧美一区二区视频| 午夜精品免费观看| 亚洲自拍欧美精品| 亚洲精品视频网址| a级精品国产片在线观看| 亚洲 国产 图片| 久久亚洲色图| 黄色三级中文字幕| 日韩国产专区| 鲁丝一区二区三区免费| 精品久久免费视频| 久久精品久久久| 蜜桃麻豆www久久国产精品| 国产精品免费精品自在线观看| 欧美在线视频免费播放| 91三级在线| 中文字幕久久亚洲| 婷婷av一区二区三区| 日韩欧美亚洲国产另类 | 欧美日韩国产高清一区二区| 成人免费看片98欧美| 亚洲欧美日韩中文播放| 国产精品免费无码| 丁香激情综合五月| 亚洲一级片免费观看| 美女看a上一区| 黄色a级片免费| 超碰超碰在线| 欧美草草影院在线视频| 一级特黄aaa大片在线观看| 色哟哟日韩精品| 永久免费看片在线播放| 亚洲综合在线第一页| 疯狂撞击丝袜人妻| 国产精品久线观看视频| www久久久久久久| 久久久久久久久久久久久女国产乱| 麻豆精品国产传媒av| 成人动漫在线一区| 在线播放av网址| 成人夜色视频网站在线观看| 成人性生交视频免费观看| 麻豆精品一区二区综合av| 能看的毛片网站| 日韩成人免费在线| 免费裸体美女网站| 亚洲综合国产| 日韩 欧美 高清| 爽好多水快深点欧美视频| 国产a视频免费观看| 美女诱惑黄网站一区| 国产成人无码一二三区视频| 另类天堂av| 日本女优爱爱视频| 久久精品国产一区二区三| 成年网站在线播放| 久久99久国产精品黄毛片色诱| 香蕉视频999| 国产中文一区二区三区| 丰满人妻一区二区三区大胸| 国产成人精品网址| 中文字幕无人区二| 99久久国产免费看| 国产av自拍一区| 婷婷综合视频| 精品国产乱码久久久久久虫虫漫画 | 91午夜精品| 国产乱码精品一区二区三区卡 | 裸体裸乳免费看| 在线免费观看日本欧美爱情大片| 超薄肉色丝袜足j调教99| 欧美成人中文| 国产原创中文在线观看| 久久精品1区| www.超碰97.com| 成人午夜看片网址| 国产精品无码久久久久一区二区| 国产欧美精品国产国产专区 | 激情久久av一区av二区av三区 | 欧美一区二区三区思思人| 国精产品乱码一区一区三区四区| 亚洲精品成人久久| 国产高清在线观看| 欧美成人精品xxx| 在线手机中文字幕| 国产日韩在线播放| 久久影院资源站| 日韩在线电影一区| 国产精品v日韩精品v欧美精品网站| 女人喷潮完整视频| 久久99国内精品| av网页在线观看| 国产精品毛片久久久久久| 久青草免费视频| 欧美亚洲一区三区| 亚洲国产精品国自产拍久久| 亚洲人成自拍网站| 99在线播放| 国产成+人+综合+亚洲欧美丁香花| 亚洲福利影视| 久久成人资源| 综合激情婷婷| 日本va中文字幕| 国产91露脸合集magnet| 欧美激情 一区| 精品免费在线视频| 99国产精品久久久久久久成人| 日韩av最新在线| 怡红院av在线| 国产精品久久久久久久久久三级| 亚洲电影一区| 亚洲欧洲国产精品久久| 99热免费精品| 精品人妻无码中文字幕18禁| 欧美激情综合五月色丁香小说| 国产精品99精品| 制服丝袜中文字幕亚洲| 国产综合在线观看| 国内精品久久久| 日韩精品亚洲专区在线观看| 亚洲va韩国va欧美va精四季| 国产精品一国产精品k频道56| 男生和女生一起差差差视频| 91亚洲精品乱码久久久久久蜜桃| 中文字幕资源站| 欧洲亚洲国产日韩| 日韩大胆人体| 国内精品久久久久影院优| www.久久久久爱免| 亚洲一区二区三区色| 裸体素人女欧美日韩| 黄色免费视频网站| 亚洲国产综合视频在线观看| 成人av一区二区三区在线观看| 日日噜噜噜夜夜爽亚洲精品| 电影一区电影二区| 日本黑人久久| 麻豆精品网站| 亚洲自拍偷拍一区二区| 亚洲免费电影在线| 99久久精品无免国产免费 | 欧洲精品码一区二区三区免费看| 一区在线播放| 91传媒理伦片在线观看| 亚洲国产日日夜夜| 老司机午夜福利视频| 韩日精品中文字幕| 极品国产人妖chinesets亚洲人妖| 亚洲 欧美 综合 另类 中字| 国产成人在线视频免费播放| 久久久国产精品人人片| 精品成人一区二区三区| yellow字幕网在线| 精品免费日产一区一区三区免费| 国产日韩一区| 亚洲人成人无码网www国产 | 97精品伊人久久久大香线蕉| 超碰在线成人| 日本网站免费在线观看| 久久夜色精品一区| 亚洲欧美一二三区| 色妞在线综合亚洲欧美| 国产一区二区三区黄网站| 中文字幕日韩精品无码内射| 风间由美性色一区二区三区| 国产欧美日韩另类| 亚洲欧美日韩一区在线| 国产经典一区| 992tv成人免费观看| 成人一二三区视频| 亚洲黄网在线观看| 中文字幕最新精品| 亚洲超碰在线观看| 黄色影院一级片| 中文成人av在线| 国产后入清纯学生妹| 欧美中文字幕第一页| 成人同人动漫免费观看| 午夜影院免费版| 黄色一区二区三区| 欧美性videos| 国产成人精品免费视频大全最热| 国产精品久久久久9999高清| 成熟人妻av无码专区| 欧美一区二区播放| 日本午夜大片a在线观看| 在线精品日韩| av在线不卡免费看| 一区二区视频网站| 欧美黑人狂野猛交老妇| 国产成人调教视频在线观看 | 国产欧美精品日韩区二区麻豆天美| 国产精品久久影视| 2019中文字幕在线观看| 偷偷www综合久久久久久久| 星空大象在线观看免费播放| 在线观看视频一区二区| 日本片在线看| 亚洲一区二区在线看| 成人av在线影院| 国产乱码精品一区二区| 秋霞午夜一区二区| 欧美成人首页|