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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

  在运维工作中经常遇到要管理备份、日志等与时间戳有关的文件,例如删除超过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日志并进行多维度分析。
相关文章
|
7月前
|
存储 安全 固态存储
删除的文件还能回来吗?当然可以!教你如何恢复
误删文件不必慌,恢复机会仍存在!删除的文件常被标记而非立即清除,故在新数据覆盖前,文件恢复是可能的。SSD例外,因其TRIM功能即时擦除。恢复步骤:检查回收站,利用系统恢复功能,或专业软件如DiskGenius扫描硬盘。及时行动,避免数据覆盖至关重要。预防最佳:定期备份,谨慎操作,启用安全防护,确保数据安全无忧。记得,预防优于事后恢复!🚀✨ (239 characters)
删除的文件还能回来吗?当然可以!教你如何恢复
|
9月前
|
弹性计算 运维 Shell
自动清理临时文件
【4月更文挑战第30天】
63 0
|
Shell
1、定时清空文件内容,定时记录文件大小
1、定时清空文件内容,定时记录文件大小
115 1
|
Shell Perl
显示上次更新的文件
显示上次更新的文件
78 0
|
Windows
bat使用forfiles自动批量删除过期文件
bat使用forfiles自动批量删除过期文件
298 0
bat使用forfiles自动批量删除过期文件
|
存储 编译器 C++
清除 C/C++ 中的输入缓冲区
临时存储区称为缓冲区。所有标准输入和输出设备都包含一个输入和输出缓冲区。在标准 C/C++ 中,流被缓冲,例如在标准输入的情况下,当我们按下键盘上的键时,它不会发送到您的程序,而是由操作系统缓冲直到时间分配到那个程序。
232 0
|
消息中间件 存储 RocketMQ
删除过期文件机制分析|学习笔记
快速学习删除过期文件机制分析
|
存储 缓存
运用惰性删除和定时删除实现可过期的localStorage缓存
使用localStorage可以在浏览器中存储键值对的数据。经常被和localStorage一并提及的是sessionStorage,它们都可以在当浏览器中存储键值对的数据。但是它们之间的区别是:存储在localStorage的数据可以长期保留;而当页面会话结束(也就是当页面被关闭)时,存储在sessionStorage的数据会被清除。
403 0
|
Linux
删除恢复的文件
当Linux计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹。管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。有时可以通过lsof来恢复这些文件。
864 0