自動刪除超過10GB資料夾中的所有檔案?

自動刪除超過10GB資料夾中的所有檔案?

我有一台 DigitalOcean 的小型伺服器(每月 5 美元),該伺服器上的 20GB 空間中只有大約 16GB 空間。我將託管一個網站,該網站將自動下載一些小檔案(3-6Mb),最終下載資料夾會變大。是否有某種 cron 作業或腳本會每天自動運行並檢查特定資料夾,如果該資料夾超過 X GB,那麼它將嘗試清理該資料夾? (某些文件可能正在使用中)

如果這很重要的話,我正在運行 Ubuntu 15。感謝您的任何提示。

答案1

我已經編寫了一個腳本,將在下面執行此操作 - 請仔細檢查您是否滿意它,特別是 rm -r 命令,因為我還沒有執行它。 (此命令應刪除給定資料夾中的所有內容,包括子資料夾。

#! /bin/bash

FOLDER=/folder/to/delete

MAXSIZEINGIGS=10

#### No User Serviceable Parts below this line ###

MAXSIZE=$(( $MAXSIZEINGIGS * 1024 * 1024 ))
FOLDERSIZE=`du -ks $FOLDER | cut -f1`

if [ $FOLDERSIZE -gt $MAXSIZE ]
then
        rm -r $FOLDER/*
fi

使用上面的腳本建立一個文件,然後使其可執行(chmod 755 檔案名稱)並將其新增至 crontab 中,使用如下行

02 02 * * *    ownername   /path/to/file

(這將在每天早上 02:02 運行,並假設您已將其新增至 /etc/crontab。如果您已將其新增至使用者 crontab,請省略「ownername」位元。

也就是說,我想知道這是否是一種好的做事方式。一種完全不同的方法可能是簡單地定期刪除所有早於給定年齡的檔案 - 您可以使用 crontab 中的 1 行來完成此操作,例如

02 04 * * *     username     find /data/spam -ctime +15 -exec rm {} +

它將在 /data/spam 中查找所有早於 14 天的檔案並將其刪除。

相關內容