Linux之清理日志文件
背景
linux主机发现日志文件增长过快导致主机根分区使用率过高,需要找出大文件日志并清理。
查找大文件
为了更清楚显示是什么原因导致根分区使用率,可以在根分区下,逐级目录使用du命令查看是否有大文件,并评估是否可以删除。
- 查找根下所有目录的文件并排序
du -sh /* 2>/dev/null | sort -hr | head -3
- 如果上述命令执行后发现/var/占空间最大,那么在查找/var分区内的大文件,如:
du -sh /var/* 2>/dev/null | sort -hr | head -3
- 以此类推,最后找到那个大文件,删除或者采取其他措施即可!
解决方法
对于日志文件或其他文件导致分区使用率偏高,采取什么措施一般要根据客户或现场的意愿来决定, 不可擅自采取删除操作。针对此情况,一般有三种解决方法:
- 删除,时间比较早的日志觉得已经无用,在客户同意的前提下,删除即可。 这里以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
- 打包压缩 ,最常用的方法。以tar.gz包为例:
tar --remove-files -czf adclick.2011-06.tar.gz adclick.2011-06*
对以adclick.2011-06开头的所有文件,打包成adclick.2011-06.tar.gz,并删除原文件。
--remove-files表示删除原文件
- 转移/转存,最常用的命令是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服务。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)