我有一个备份脚本,它在 CIFS 安装文件夹中创建 /var/www 文件夹的备份(在 tar.gz 中)。
为了删除浪费内存的旧备份,我创建了一个 cronjob,每天检查存档是否超过 20 天,如有必要,它会删除特定的 tar.gz 文件。
这是我的计划:
0 1 * * * find /my/cifs/mnt/path/*.tar.gz -mtime +20 -exec rm {} \;
是对的吗?并不是说其中有任何错误,它会删除硬盘驱动器上超过 20 天的所有文件,而不仅仅是备份文件夹中的文件。
答案1
通常您会使用以下-name
选项:
0 1 * * * find /my/cifs/mnt/path/ -name '*.tar.gz' -mtime +20 -exec rm {} \;
另外,请确保您找到文件:
0 1 * * * find /my/cifs/mnt/path/ -name '*.tar.gz' -type f -mtime +20 -exec rm {} \;
通过拆分该-name
选项,您将在给定目录及其子目录中找到文件。另外,如果没有档案,find
则会报告错误(而不是简单地继续而不采取任何行动)。
最后,您可以通过更改命令的结尾来处理包含异常字符(例如空格)的文件名:
0 1 * * * find /my/cifs/mnt/path/ -name '*.tar.gz' -type f -mtime +20 -exec rm {} +