18项目实战_保留最近N天的备份文件
项目实战_保留最近N天的备份文件
需求
[需求1]:定期删除/data目录下修改时间的大于7天的文件
[需求2]:定期清理/data/YY-MM-DD.tar.gz
该目录仅工作日周一至周五自动生成文件YY-MM-DD.tar.gz
希望只保留最近2天的备份文件
无论过几个节假日/data仍会有前两个工作日的备份文件
需求分析与处理
需求分析
1.定期删除/data目录下修改时间的大于7天的文件
==> `使用find找到修改时间大于7天的,通过xargs/exec执行删除`
2.定期清理/data/YY-MM-DD.tar.gz
该目录仅工作日周一至周五自动生成文件YY-MM-DD.tar.gz
希望只保留最近2天的备份文件
无论过几个节假日/data仍会有前两个工作日的备份文件
==> `核心就是保留最新的两个备份文件,ls -t可以通过修改时间进行排序,最新的放在最前面,通过awk进行分割,使用xargs/exec执行删除第3个开始的文件`
需求1
脚本内容
[root@hadoop04 ~]# vim /tmp/delete_backup.sh
#!/usr/bin/env bash
# 定义备份目录
backup_dir=/data
# 删除超过7天的文件
find "${backup_dir}" -mtime +7 | xargs rm -f
脚本执行
# 添加执行权限
[root@hadoop04 ~]# chmod +x /tmp/delete_backup.sh
# 设置不允许对脚本文件进行任何的修改,文件不能删除,不能更改,不能移动
[root@hadoop04 ~]# chattr +i /tmp/delete_backup.sh
# 根据实际情况创建定时任务
[root@hadoop04 ~]# crontab -e
* * * * * /tmp/delete_backup.sh
需求2
脚本内容
[root@hadoop04 ~]# vim /tmp/delete_backup_file.sh
#!/usr/bin/env bash
# 定义备份目录
backup_dir=/data
# 保留最新的两个备份文件
ls -t ${backup_dir}/*.tar.gz | awk 'NR>2' | xargs rm -rvf
# ls -t ${backup_dir}/*.tar.gz | awk 'NR>2{print "rm -rf " $0}' | bash
脚本执行
[root@hadoop04 ~]# chmod +x /tmp/delete_backup_file.sh
[root@hadoop04 ~]# chattr +i /tmp/delete_backup_file.sh
# 根据实际情况创建定时任务
[root@hadoop04 ~]# crontab -e
* * * * * /tmp/delete_backup.sh