自动删除文件夹中所有超过 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,请省略“所有者名称”位。

话虽如此,我不知道这是否是一种好的做法。一种完全不同的方法可能是定期删除所有超过给定年龄的文件 - 你可以使用 crontab 中的一行代码来执行此操作,例如

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

它将在 /data/spam 中查找所有超过 14 天的文件并将其删除。

相关内容