我有一台 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 天的文件并将其删除。