linux 下查找最大文件并清除日志文件

本文介绍了一种快速查找服务器上占用大量空间的大文件的方法,并详细展示了如何通过特定命令找到并处理MySQL日志文件,以释放服务器空间。

最近服务器的空间快满了, 但一直不知道是哪些文件增加的太快了

在网上查了一下资料, 可以找出文件大于100M的所以文件。

 

find / -type f -size +100000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'

 

结果发现很多MYSQL的日志文件大于100M,终于找出了空间不足的原因。

写道

-rw-rw---- 1 mysql adm 108533735 Dec 26 19:40 mariadb-bin.001554
-rw-rw---- 1 mysql adm 107922028 Dec 26 19:44 mariadb-bin.001555
-rw-rw---- 1 mysql adm 108011831 Dec 26 19:50 mariadb-bin.001556
-rw-rw---- 1 mysql adm 108038798 Dec 26 19:56 mariadb-bin.001557
-rw-rw---- 1 mysql adm 108108522 Dec 26 20:03 mariadb-bin.001558
-rw-rw---- 1 mysql adm 108395783 Dec 26 20:09 mariadb-bin.001559
-rw-rw---- 1 mysql adm 108420909 Dec 26 20:14 mariadb-bin.001560
-rw-rw---- 1 mysql adm 109152256 Dec 26 20:19 mariadb-bin.001561
-rw-rw---- 1 mysql adm 109231622 Dec 26 20:30 mariadb-bin.001562
-rw-rw---- 1 mysql adm 108397283 Dec 26 20:35 mariadb-bin.001563
-rw-rw---- 1 mysql adm 105464728 Dec 26 21:18 mariadb-bin.001564
-rw-rw---- 1 mysql adm 106025080 Dec 26 22:03 mariadb-bin.001565
-rw-rw---- 1 mysql adm 106027850 Dec 26 22:54 mariadb-bin.001566
-rw-rw---- 1 mysql adm 106445563 Dec 26 23:20 mariadb-bin.001567
-rw-rw---- 1 mysql adm 109531594 Dec 26 23:35 mariadb-bin.001568
-rw-rw---- 1 mysql adm 109583331 Dec 26 23:57 mariadb-bin.001569
-rw-rw---- 1 mysql adm 110361983 Dec 27 00:12 mariadb-bin.001570
-rw-rw---- 1 mysql adm 109200836 Dec 27 00:23 mariadb-bin.001571

 

 

登陆到MYSQL服务器上, 删除日志文件

 

写道
PURGE BINARY LOGS BEFORE '2013-12-25';

 

发现几乎一半的空间就腾出来了

root:# df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda5       110G   27G   78G  26% /

 

 

ebook Library

 

<think> 首先,用户的问题是:“我想查找Linux系统中压缩日志文件另存为的方法”。我需要基于提供的引用内容回答这个问题。 用户提供了几个引用: - 引用[1]:关于Linux日志压缩及清理,提到使用gzip保留源文件的方法:gzip –c filename > filename.gz。 - 引用[2]:关于定时删除或压缩日志文件,有脚本示例和crontab设置。 - 引用[3]:关于自动压缩日志文件,使用tar命令压缩前一天的文件。 - 引用[4]:关于日志定期压缩清除,结合Shell和crontab实现。 - 引用[5]:关于压缩部分文件,使用tar和xargs命令。 系统级指令: - 所有行内数学表达式用$...$格式(但这里没有数学表达式)。 - 独立公式用$$...$$(同样不需要)。 - LaTeX语法正确(无数学内容)。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,如[^1]。 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 用户的问题是压缩日志文件另存为,意思是压缩文件后保留原始文件,而不是覆盖它。这在Linux中常见。 关键点: - 在Linux中,压缩文件时,默认行为可能覆盖或删除原始文件。用户想保留原始文件。 - 参考引用[1]:gzip –c filename > filename.gz,这会压缩文件保留原始文件。 - 引用[3]:使用tar -Pczvf $log.tar.gz $log来压缩目录。 - 引用[5]:使用tar命令压缩部分文件。 回答结构清晰: - 开头简要解释。 - 逐步介绍方法。 - 提供示例命令。 - 最后生成相关问题。 步骤: 1. **解释压缩另存为的含义**:意思是压缩文件或目录时,原始文件不被删除,压缩文件另存为新文件。 2. **常见命令**: - 使用gzip:gzip -c filename > filename.gz(引用[1])。 - 使用tar:tar -czvf archive.tar.gz directory/(压缩目录到新文件)。 - 使用tar压缩文件列表(引用[5])。 3. **脚本和自动化**:引用[2]、[3]、[4]提到结合Shell脚本和crontab自动压缩日志。 4. **保留原始文件**:关键是使用选项如-c for gzip或-P for tar来避免覆盖。 方法总结: - **gzip方法**:gzip -c filename > filename.gz。这会读取filename的内容,压缩后输出到filename.gz,而不删除原始文件。 - **tar方法**:对于多个文件或目录,tar -czvf archive.tar.gz source/。tar命令默认不删除文件。 - **自动化**:编写Shell脚本,使用cron定时执行。 在回答中引用: - 提到相关引用自然地添加标识。 最后,生成相关问题: - 基于用户查询,生成几个相关问题。 完整回答纲: 1. **介绍**:解释如何在Linux中压缩日志文件保留原始文件。 2. **方法一:使用gzip命令**。 - 示例:gzip -c filename.log > filename.log.gz [^1]。 3. **方法二:使用tar命令**。 - 示例:tar -czvf logs.tar.gz directory/ 。 4. **方法三:脚本自动化**。 - 编写Shell脚本压缩指定文件。 - 设置cron定时任务(引用[2]、[3])。 5. **注意事项**:如使用-P选项避免tar警告(引用[3])。 6. **相关问题**。 确保语言中文。 </think> ### Linux系统下压缩日志文件另存为的方法 在Linux系统中,压缩日志文件另存为(即保留原始文件,生成新的压缩文件)是一种常见的日志管理策略。这可以通过命令行工具(如`gzip`或`tar`)实现,还可以结合Shell脚本和定时任务自动化处理。以下是详细步骤和方法,基于引用内容整理而成。 #### 1. **使用gzip命令压缩单个文件另存为** - `gzip`命令默认会删除原始文件,但通过`-c`选项可以将压缩结果重定向到新文件,保留原始文件。 - **命令格式**: ```bash gzip -c filename.log > filename.log.gz ``` - 解释:`-c`选项将压缩后的数据输出到标准输出,然后通过重定向(`>`)保存为新文件(如`.gz`后缀)。 - 示例:压缩`access.log`文件保留原始文件: ```bash gzip -c access.log > access.log.gz ``` ![执行后,原始access.log保留,新增access.log.gz文件](https://via.placeholder.com/150?text=Log+GZIP) - 注意事项:确保文件名后缀正确,避免覆盖问题[^1][^4]。 #### 2. **使用tar命令压缩多个文件或目录另存为** - `tar`命令适合压缩多个日志文件或整个目录,默认不删除文件。 - **命令格式**: ```bash tar -czvf archive.tar.gz source_directory/ ``` - 解释: - `-c`:创建新压缩文件。 - `-z`:使用gzip压缩。 - `-v`:显示压缩过程(可选)。 - `-f`:指定输出文件名(本例为`archive.tar.gz`)。 - 末尾加`-P`选项可避免路径警告(引用[3])。 - 示例:压缩`/var/log/app/`目录下的所有日志文件: ```bash tar -czvf app_logs.tar.gz /var/log/app/ ``` ![生成app_logs.tar.gz,原始日志文件保留](https://via.placeholder.com/150?text=TAR+GZ) - 针对部分文件(如按日期过滤):结合`find`或`xargs`命令(引用[5]): ```bash find /var/log/ -name "*.log" -exec tar -czvf logs_$(date +%Y%m%d).tar.gz {} + ``` #### 3. **通过Shell脚本自动化压缩另存为** 对于定期日志管理,可编写Shell脚本使用cron定时执行(引用[2][^3][^4])。 - **脚本示例**(压缩前一天日志保留原始文件): ```bash #!/bin/bash # 获取前一天日期 log_dir="/data/logs/" yesterday=$(date -d "yesterday" +'%Y%m%d') # 压缩日志文件另存为(使用tar保留源文件) tar -Pczvf "${log_dir}${yesterday}.tar.gz" "${log_dir}${yesterday}/" ``` - 保存为`zip_logs.sh`,赋予执行权限:`chmod +x zip_logs.sh`。 - 执行脚本:`./zip_logs.sh`,输出类似`20230812.tar.gz`的新文件。 - **设置cron定时任务**(每天凌晨2点执行): ```bash crontab -e # 添加以下行 0 2 * * * /data/logs/zip_logs.sh >> /dev/null 2>&1 ``` ![cron定时压缩示意图](https://via.placeholder.com/150?text=Cron+Job) #### 4. **关键注意事项** - **保留原始文件**:始终使用`gzip -c >`或`tar -czvf`,避免直接`gzip filename`这会删除文件[^1][^4]。 - **空间管理**:压缩后可使用`rm`手动清理旧文件(如保留最近7天日志),但脚本中应优先压缩而非删除[^4]。 - **权限问题**:确保脚本运行用户对日志目录有读写权限(引用[2][^3])。 - **工具安装**:如未安装`gzip`或`tar`,运行`sudo apt-get install gzip tar`(Ubuntu)或`sudo yum install gzip tar`(CentOS)[^2]。 通过以上方法,您可以高效压缩日志文件存为新文件,避免原始数据丢失。自动化脚本结合cron能显著简化运维工作[^2][^3][^4]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值