Linux之清理日志文件

背景

linux主机发现日志文件增长过快导致主机根分区使用率过高,需要找出大文件日志并清理。

查找大文件
为了更清楚显示是什么原因导致根分区使用率,可以在根分区下,逐级目录使用du命令查看是否有大文件,并评估是否可以删除。

  1. 查找根下所有目录的文件并排序
    du -sh /* 2>/dev/null | sort -hr | head -3
  2. 如果上述命令执行后发现/var/占空间最大,那么在查找/var分区内的大文件,如:
    du -sh /var/* 2>/dev/null | sort -hr | head -3
  3. 以此类推,最后找到那个大文件,删除或者采取其他措施即可!

解决方法
对于日志文件或其他文件导致分区使用率偏高,采取什么措施一般要根据客户或现场的意愿来决定, 不可擅自采取删除操作。针对此情况,一般有三种解决方法:

  1. 删除,时间比较早的日志觉得已经无用,在客户同意的前提下,删除即可。 这里以mysql的二进制日志为例:
find /data/mysql_data -maxdepth 1 -name "mysql-bin.0*" -ctime +15 -exec rm {} \; 

/data/mysql_data是日志所在的文件夹 
-maxdepth 1     表示只查找指定的文件夹,而不包括子目录。如果不指定-maxdepth,表示包括子目录 
-name           查找符合条件的文件名 
-ctime +15      表示查找创建时间是15天之前的 
-exec rm {} \;  表示对符合条件的文件进行删除 

整个语句的意思是,只查找/data/mysql_data下(不包括子目录),名称以mysql-bin.0开头,且创建时间是15天前的文件,并删除它们。
当然,也可以自行在相关目录,使用 rm -rf 命令手动删除目标文件,可利用通配符提高删除效率,比如,想一次性删除掉11月产生的日志文件,
# rm -rf xxx-2018-11-*.log

  1. 打包压缩 ,最常用的方法。以tar.gz包为例:
tar --remove-files -czf adclick.2011-06.tar.gz adclick.2011-06* 

对以adclick.2011-06开头的所有文件,打包成adclick.2011-06.tar.gz,并删除原文件。 
--remove-files表示删除原文件
  1. 转移/转存,最常用的命令是rsync:
/usr/bin/rsync -vzrtopgu --progress --delete /home/logs/ 10.10.10.1::public/logs 

以/home/logs为例,该目录下的所有文件以及文件夹,同步到10.10.10.1服务器的public/logs目录下。当然10.10.10.1需要开启rsync服务。
posted @   *一炁化三清*  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示