我公司有个OCR上传图片系统,每天会生成一个类似2025-05-10的文件夹,为了运维方便和硬盘空间的使用,我需要每天去删除之前的旧文件夹,比较麻烦。借助了Deepseek的帮助,将内容分享一下并给自己Mark下。
1. 创建删除脚本
创建一个名为 delete_old_folders.sh 的脚本:
#!/bin/bash
# 计算三天前的日期(格式:YYYYMMDD)
target_date=$(date --date="3 days ago" +%Y%m%d)
# 目标文件夹路径
folder_path="/media/sda/server/Output/ocr/$target_date"
# 检查文件夹是否存在并删除
if [ -d "$folder_path" ]; then
rm -rf "$folder_path"
fi
将脚本保存到安全位置(如
/usr/local/bin/delete_old_folders.sh),并赋予执行权限
sudo chmod +x /usr/local/bin/delete_old_folders.sh
2. 添加日志功能(可选)
为方便调试,可在脚本中添加日志记录:
确保日志文件有写入权限:
sudo touch /var/log/delete_old_folders.log
sudo chmod 644 /var/log/delete_old_folders.log
3. 设置定时任务
使用 crontab 设置每天8点执行脚本:
# 编辑当前用户的定时任务
crontab -e
0 8 * * * /usr/local/bin/delete_old_folders.sh
4. 测试脚本
- 手动运行测试:
/usr/local/bin/delete_old_folders.sh
- 检查目标文件夹是否被删除,或查看日志确认。
- 模拟日期测试(可选):
临时修改脚本中的日期计算(如 2 days ago),创建对应测试文件夹并验证删除。
注意事项
- 路径权限:确保脚本执行用户(如root)有权限删除目标文件夹。
- 时区问题:确认系统时区与脚本使用的时区一致。
- 数据安全:使用 rm -rf 前务必检查路径,避免误删。
完成后,系统将每天8点自动删除三天前的文件夹。
如果是YYYY-MM-DD格式
修改脚本:
#!/bin/bash
# 计算三天前的日期(格式:YYYY-MM-DD)
target_date=$(date --date="3 days ago" +%Y-%m-%d) # <-- 修改日期格式
# 目标文件夹路径
folder_path="/media/sda/server/Output/ocr/$target_date"
# 检查文件夹是否存在并删除
if [ -d "$folder_path" ]; then
rm -rf "$folder_path"
fi