精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

四虎成人在线观看| 日本不卡一区二区在线观看| 亚洲色大成网站www| 亚洲国产片色| 亚洲女人初尝黑人巨大| 国产xxxxx视频| 日本最新在线视频| 国产v综合v亚洲欧| 欧美在线观看网站| 欧美巨胸大乳hitomi| 亚洲我射av| 亚洲va天堂va国产va久| yellow视频在线观看一区二区| 久久久国产精品黄毛片| 爽爽窝窝午夜精品一区二区| 色妹子一区二区| 黄色影视在线观看| 天堂中文在线资| 麻豆九一精品爱看视频在线观看免费| 在线观看日韩专区| 制服丝袜av在线| 日韩精品一区二区三区av| 亚洲色图视频网| 久久99精品久久久久久久青青日本| 黄色av网站免费| 韩日精品在线| 国产一区二区精品丝袜| 欧美在线a视频| 日韩电影网站| 亚洲影院理伦片| 亚洲 国产 日韩 综合一区| jlzzjlzz亚洲女人18| 麻豆精品91| 久久久久国产视频| 国产农村妇女精品一区| 久久香蕉精品香蕉| 欧美一区二区视频在线观看2020 | 免费看污黄网站| 欧美xxxx做受欧美88bbw| 国产午夜亚洲精品羞羞网站| 91成人免费在线观看| 日韩一级片中文字幕| 国产精品大片| 日韩视频在线免费| 亚洲一区二区自偷自拍| 哺乳一区二区三区中文视频| 欧美日韩在线电影| 国产熟女高潮视频| 55av亚洲| 亚洲国产视频一区二区| 中文字幕乱码一区二区三区| 黄网在线免费| 97se亚洲国产综合在线| 国产精品久久久久久久久久直播| 国产精品久久777777换脸| 久久久成人网| 欧美亚洲在线视频| 国产成人无码精品亚洲| 欧美激情五月| 美女av一区二区三区| 一二三四国产精品| 欧美日韩激情在线一区二区三区| 亚洲精品av在线播放| 黑人性生活视频| 国产精品美女久久久久| 欧美精品三级在线观看| 青青视频在线播放| 三级在线看中文字幕完整版| 亚洲国产aⅴ天堂久久| 在线国产精品网| 最新国产在线观看| 亚洲欧洲韩国日本视频| 一区二区三区四区五区精品| 美女欧美视频在线观看免费| 久久亚洲精品小早川怜子| 你懂的视频在线一区二区| 99在线观看精品视频| 国产一区二区三区四| 亚洲free嫩bbb| www.国产黄色| 成年人午夜久久久| 蜜桃视频日韩| 男女网站在线观看| 国产精品污网站| 亚洲一区二区三区精品在线观看| 91大神xh98hx在线播放| 中文字幕在线一区| 992tv快乐视频| 神马午夜伦理不卡| 午夜久久久久久久久久一区二区| 97在线国产视频| 这里有精品可以观看| 欧洲精品一区二区| 亚洲一区二区偷拍| 9999久久久久| 亚洲欧美国产视频| 国产精品免费在线视频| 欧美日韩ab| 日本精品一区二区三区在线 | 色老汉一区二区三区| 午夜视频在线瓜伦| 国产精品原创视频| 日韩一区二区免费电影| 在线免费观看污视频| 一区二区三区韩国免费中文网站| 中日韩美女免费视频网站在线观看| 日本女人性生活视频| 欧美精品二区| 国产精品aaaa| 精品国产黄色片| 久久午夜羞羞影院免费观看| 先锋影音亚洲资源| 丁香花在线电影| 欧美伊人久久久久久久久影院| 超碰在线资源站| 色吊丝一区二区| 久久精品青青大伊人av| 日本熟女一区二区| 免费一级欧美片在线观看| 爱情岛论坛亚洲入口| 国产精品视频一区二区久久| 亚洲色图.com| 91黄色小网站| 欧美a在线观看| 亚洲一级一级97网| 久久成人在线观看| 蜜臀av一级做a爰片久久| 91在线观看免费| 久久精品蜜桃| 亚洲高清免费视频| 日韩精品视频一二三| 激情小说一区| 久久人人爽人人爽爽久久| 日本免费在线观看视频| 国产成人亚洲综合色影视| 日韩欧美在线观看强乱免费| 麻豆福利在线观看| 欧美丰满一区二区免费视频| 性久久久久久久久久| 亚洲综合中文| 国产精品稀缺呦系列在线| 亚洲aⅴ在线观看| 一区二区三区欧美| 国产欧美激情视频| 欧美激情99| 久久久久久久久久国产| 国产麻豆免费观看| 国产精品灌醉下药二区| 天天碰免费视频| 亚洲成人一品| 97超碰蝌蚪网人人做人人爽| 亚洲成人一二三区| 亚洲色图19p| 深夜福利网站在线观看| 精品产国自在拍| 茄子视频成人在线| 日本天堂在线| 欧美性xxxx极品hd欧美风情| 99精品一区二区三区无码吞精 | 亚洲精品无人区| 亚洲播播91| 亚洲视频日韩精品| 老熟妇一区二区三区| 久久综合色综合88| 国产精品宾馆在线精品酒店| 欧美激情网址| 日韩av快播网址| 成人精品一区| 欧美美女一区二区三区| 日本免费网站视频| 久草这里只有精品视频| 天天综合中文字幕| 欧美1区2区3| 欧美床上激情在线观看| 超碰在线人人干| 亚洲va国产va欧美va观看| 中文字幕天堂av| av成人黄色| 免费一区二区三区| 久久日本片精品aaaaa国产| www.日韩.com| 亚洲精品久久久久avwww潮水| 亚洲精品第1页| 亚洲一区二区三区四区av| 亚洲久色影视| 欧美亚洲另类久久综合| 日韩欧美另类一区二区| 中文日韩在线观看| jizz中国女人| 精品二区三区线观看| 日本美女视频网站| 久久伊人亚洲| 欧美爱爱视频网站| 麻豆一区二区| 国产精品久久久久福利| 91社区在线观看| 日韩一区二区免费高清| 男女视频免费看| 国产女主播在线一区二区| 91大神免费观看| 亚洲一区久久| 国产av不卡一区二区| 欧美精品中文| 国产欧美va欧美va香蕉在线| 91精品久久久| 亚洲性猛交xxxxwww| 国产深喉视频一区二区| 粉嫩av一区二区三区免费野| 亚洲毛片亚洲毛片亚洲毛片| 国产成人在线影院| 色诱视频在线观看| 国户精品久久久久久久久久久不卡| 精品一区二区国产| 99久久99九九99九九九| 97成人精品区在线播放| xxxxx日韩| 精品av综合导航| 中文字幕在线视频第一页| 亚洲一区二区三区四区五区黄| 欧美 日韩 成人| 9人人澡人人爽人人精品| 一本色道久久亚洲综合精品蜜桃| 欧美在线三级| 色婷婷精品国产一区二区三区| 视频一区中文字幕精品| 日韩免费av在线| 99爱在线观看| 久久久精品国产| 黄色在线小视频| 亚洲丁香婷深爱综合| 91成年人视频| 在线精品视频一区二区三四| 久久久久久久久久99| 日韩一区在线看| 日韩一区二区a片免费观看| 不卡视频免费播放| 国产在线观看中文字幕| 日本亚洲三级在线| 亚洲自偷自拍熟女另类| 亚洲国产精品第一区二区三区| 亚洲日本精品国产第一区| 久操成人av| 久久综合色一本| 国产一区二区三区精品在线观看| 国产成人精品综合久久久| 女人高潮被爽到呻吟在线观看| 色青青草原桃花久久综合| 国产在线日本| 亚洲欧美日韩直播| 天堂av在线资源| 日韩av网址在线| 色网站免费观看| 亚洲成色www8888| 欧美一级性视频| 日韩欧美你懂的| 99久久国产热无码精品免费| 日本小视频在线免费观看| 色哦色哦哦色天天综合| 国产精品xxxxxx| 欧美日韩在线观看一区二区| 黄色大全在线观看| 欧美精品日日鲁夜夜添| 国产日本精品视频| 欧美精品一区二区三区在线| 熟妇人妻中文av无码| 亚洲美女喷白浆| 在线看免费av| 久久国产精品久久久久久久久久| av在线免费网站| 97人人模人人爽人人喊中文字| 嗯~啊~轻一点视频日本在线观看| 88xx成人精品| 成人av色网站| 99久热re在线精品996热视频| 麻豆成人入口| 亚洲视频小说| 极品av少妇一区二区| 国产91在线视频观看| 奇米影视一区二区三区| 三上悠亚 电影| 久久人人超碰精品| 国产免费一区二区三区四区| 亚洲一区二区在线免费看| 国产欧美一区二区三区在线看蜜臂 | 91av免费看| 免费av一区| 黄色高清视频网站| 午夜在线精品| 欧美视频亚洲图片| www日韩大片| 国产这里有精品| 你懂的成人av| 欧美在线性爱视频 | 1024视频在线| 韩国精品久久久999| 日本一区二区三区视频在线| 国产成人精品福利一区二区三区 | 亚洲桃花岛网站| 色婷婷在线播放| 国产极品jizzhd欧美| 国产精品视频一区二区三区| 欧美高清性xxxxhd| 欧美a级在线| 国产精品人人爽人人爽| 风间由美一区二区三区在线观看| 无码一区二区三区在线| 夜夜亚洲天天久久| 91在线观看喷潮| 亚洲色图第三页| h片精品在线观看| 成人有码在线视频| 成人高清电影网站| 久久国产亚洲精品无码| 精品一区二区久久| 日韩av片在线| 一本色道久久综合亚洲91| 亚洲经典一区二区| 欧美成人免费播放| 亚洲高清影院| 亚洲女人毛片| 久久久久国产一区二区| 性久久久久久久久久久| 亚洲激情六月丁香| 国产熟女精品视频| 日韩一级裸体免费视频| 精品无人乱码一区二区三区| 精品国产一区二区三区四区精华| 一区二区不卡| 992tv人人草| 自拍偷拍欧美激情| 国产内射老熟女aaaa∵| 伊人男人综合视频网| 美女写真久久影院| 免费看成人av| 香蕉久久国产| 亚洲欧美色图视频| 黑人巨大精品欧美一区二区三区| 欧美一区二区三区激情| 欧美精品www在线观看| 77成人影视| 国产精品无码人妻一区二区在线| 丁香一区二区三区| 日韩精品国产一区二区| 欧美精品一区二区三| 高清在线视频不卡| 久久精品一二三区| 亚欧成人精品| 一级片久久久久| 欧美日本不卡视频| a免费在线观看| av免费观看久久| 亚洲第一黄网| 右手影院亚洲欧美| 在线观看一区日韩| 天堂中文а√在线| 亚洲最大的免费| 激情综合在线| 中文字幕被公侵犯的漂亮人妻| 色婷婷av久久久久久久| www.视频在线.com| 91精品中国老女人| 亚洲人成毛片在线播放女女| 亚洲天堂成人av| 欧美午夜精品久久久久久孕妇| 色视频在线免费观看| 亚洲一区二区三区在线免费观看| 欧美午夜一区| 好吊日免费视频| 欧美三日本三级三级在线播放| 久操视频在线免费播放| 国产v亚洲v天堂无码| 蜜桃伊人久久| 永久免费看mv网站入口| 亚洲第一网站男人都懂| 欧美成人影院| 成人午夜免费剧场| 99久久精品国产毛片| 中国a一片一级一片| 久久成人免费视频| 天堂一区二区三区四区| 中国黄色片免费看| 亚洲国产裸拍裸体视频在线观看乱了| 欧美少妇另类| 91视频九色网站| 欧美综合国产| √天堂中文官网8在线| 亚洲国产精彩中文乱码av| yiren22亚洲综合| 成人午夜视频在线观看免费| 国产女人水真多18毛片18精品视频| 国产精品美女一区| 欧美亚洲日本黄色| 婷婷激情综合| 中文字幕在线看高清电影| 欧美一区二区三区思思人| 中文字幕这里只有精品| 只有这里有精品| 国产午夜精品一区二区三区嫩草| 国产高清视频免费| 国产精品偷伦免费视频观看的|