关于保留最新文件或清除过期文件的简单总结

简介:

  在运维工作中经常遇到要管理备份、日志等与时间戳有关的文件,例如删除超过10天的备份/日志文件,保存最新的10个的备份/日志文件等。

  “删除超过10天的备份/日志文件”是用的比较多的一种,通常用于定时计划任务,每次产生这些文件都是规律的时间点。

  “保存最新的10个备份/日志文件”这种需求通常用在不定时的产生备份(例如每次手动执行一次产生)和日志文件(超过一定的大小则切割)。

  两种不同的需求对应不同的方法去实现,无论使用什么样的方法都要找出所需要操作的文件或者去除不需要的文件。

  Linux Bash Shell代码 “删除超过10天的备份/日志文件” 找出这些超过10天的文件,然后执行删除:

1
2
3
4
5
6
7
8
9
10
11
function  clean_old_files_older_than_day(){
     save_days=10
     files_ops= "/data/docker/logs/myApp/"
     need_clean=$( find  ${files_ops} -name  "*.log"  -mtime +${save_days} - exec  ls  '{}'  \;)
     if  [ ! -z ${need_clean} ];  then
         echo  "Old logs have been found, clean old logs now. "
         find  -L ${files_ops} -maxdepth 1 -name  "*.log"  -a ! -name  "^."  -mtime +${save_days} - exec  rm  -rf  '{}'  \;
     else
         echo  "All logs are not expired, skipping. "
     fi
}

  Linux Bash Shell代码 “保存最新的10个备份/日志文件” 找出这些除了最新的10个文件之外的文件,然后执行删除:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function  keep_some_newest_files(){
     num_save=10
     files_ops= "/data/backup/db/mysql/"
     num_files=$( find  ${files_ops} - type  d - printf  "%C@ %p\n"  sort  -n |  wc  -l)
     if  test  ${num_files} -gt ${num_save}; then
         echo  "total number of files is $num_files."
         num_ops=$( expr  ${num_files} - ${num_save})
         echo  "$num_ops files are going to be handled."
         list_ops=$( find  ${files_ops} - type  d - printf  "%C@ %p\n"  sort  -n |  head  -n${num_ops} |  awk  -F  '[ ]+'  '{print $2}' )
         # IFS=' '$'\t'$'\n', If IFS is unset, or its value is exactly <space><tab><newline>
         old_IFS=$IFS
         IFS= " "
         for  file_ops  in  ${list_ops}; do
             echo  "$file_ops"
             test  -d ${file_ops} &&  rm  -rf ${file_ops}
         done
         IFS= "$old_IFS"
     else
         echo  "total number of files is $num_files."
         echo  "0 files are going to be handled, skipping."
     fi
 
}

tag:日志文件管理,备份文件管理,find删除文件

--end--



本文转自 urey_pp 51CTO博客,原文链接:http://blog.51cto.com/dgd2010/1833665,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
8月前
|
Shell Perl
显示上次更新的文件
显示上次更新的文件
41 0
|
9月前
|
Shell
1、定时清空文件内容,定时记录文件大小
1、定时清空文件内容,定时记录文件大小
72 1
|
消息中间件 存储 RocketMQ
删除过期文件机制分析|学习笔记
快速学习删除过期文件机制分析
182 0
|
存储 缓存
运用惰性删除和定时删除实现可过期的localStorage缓存
使用localStorage可以在浏览器中存储键值对的数据。经常被和localStorage一并提及的是sessionStorage,它们都可以在当浏览器中存储键值对的数据。但是它们之间的区别是:存储在localStorage的数据可以长期保留;而当页面会话结束(也就是当页面被关闭)时,存储在sessionStorage的数据会被清除。
331 0
|
监控 Linux Python
清除过期日志的py脚本
本篇和大家分享的是一个清除过期日志的python脚本,年后第二篇希望对大家有帮助; 该python脚本创建的由来 代码及分析 crontab定时任务 该python脚本创建的由来 此由来,是在过年假期时突然被反馈告警服务器磁盘空间占用比例增大,当时通过df等命令定位到,是使用了某个开源任务调度...
1363 0
|
Web App开发
PAC文件失效?
PAC文件失效怎么办? 方法1: PAC->编辑本地pac.txt文件,将以下网址内容复制到pac.txtwhitelist.pac 方法2: PAC->从GFWList更新本地PAC 嗯...更推荐方法1哟... 代理自动配置 英语:Proxy auto-config,简称PAC,是一种网页浏览器技术。
2770 0