• 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
    
  • 相关阅读:
    系统调用简单总结
    系统调用原理详解
    总结:c 语言与Linux操作系统的关系
    poj3171 Cleaning Shifts
    洛谷P1032 字串变换
    poj3662 Telephone Lines
    洛谷P1073 最优贸易
    Uva1330/poj1964 City Game
    poj2559/SP1805 Largest Rectangle in a Histogram
    洛谷 P1196 [NOI2002]银河英雄传说
  • 原文地址:https://www.cnblogs.com/ElegantSmile/p/12370388.html
Copyright © 2020-2023  润新知