(15.1)实战项目:保留最近n天的备份文件

文章目录

    • 1.需求1
    • 2.需求2

1.需求1

  • 要求:定期删除/data目录下的修改时间大于7天的文件
查找修改时间大于2天的文件
find /data -mrime +2

查找修改时间大于2天的文件,并删除
find /data -mrime +2 -exec rm -rf {} \;
find /data -mrime +2|xargs r -rf

date修改当前时间
data 010110002017
含义:
0101111000:早上1000
20172017年
其它eg:touch `date +%F`.txt
  • eg:
#!/usr/bin/env bash
back_dir=/data

find /date -mtime +30|xargs rm -rf


(1)crontab计划任务
将脚本加入到计划任务,每隔1分钟循环一次
* * * * * /root/1_delete_file.sh

(2)查看计划任务的状态
systemctl status crond.status

(3)查看计划任务是否执行
taif /var/log/cron

(4)chattr给脚本加上只读选项:不能删除脚本,不能修改脚本里面的内容

(15.1)实战项目:保留最近n天的备份文件_第1张图片
(15.1)实战项目:保留最近n天的备份文件_第2张图片

2.需求2

  • 定期清理/data/YY-MM-DD.tar.gz。该目录仅工作日周一至周五自动生成文件YY-MM-DD.tar.gz。希望只保留最近2天的文件。
    无论过几个节假日/data仍会有前2个工作日的备份文件(最近的两份

  • 按照时间排序,其实这俩实质是效果是一样的,一个带目录,一个不带目录

ll -t /data
ls -t /data
  • eg:
删除行号大于2的,只保留2个文件
不要使用ls -l -t XXXXX,因为-l还要截取文件名,然后送给awk,麻烦了;或者cd到这个目录,然后再去删除,这样也麻烦了
ls -t |awk 'NR > 2'|xargs rm -rfv

交给bash处理
ls -t |awk 'NR > 2 {print "rm -f " $0}'|bash

你可能感兴趣的:(鸟哥Linux私房菜)