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
原文地址:https://www.cnblogs.com/ElegantSmile/p/12370388.html