Linux下Apache日志按日期分割并自动备份
来源:互联网 发布:php编程 第3版 pdf 编辑:程序博客网 时间:2024/05/18 18:52
目的:实现服务器A的Apache访问日志和错误日志每天按日期分割为一个文件保存,然后由另一台备份服务器B每天凌晨自动复制服务器A的日志文件并打包压缩备份。
- 首先要设置服务器A的apache,实现日志文件自动按日期分割,以下为CentOS为例,httpd.conf文件配置如下:[Copy to clipboard]View Code XML
<virtualhost *:80> ServerName www.example.com Serveralias example.com ServerAdmin webmaster@example.com DocumentRoot /var/www/example.com/ <directory "/"> Options FollowSymLinks AllowOverride all </directory> <directory "/var/www/example.com/"> Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all </directory> ErrorLog "|rotatelogs /var/log/httpd/example_error_log/%Y%m%d 86400 480" CustomLog "|rotatelogs /var/log/httpd/example_access_log/%Y%m%d 86400 480" common </virtualhost>
以上配置利用了apache的rotatelogs功能实现了站点日志文件每天如20081221的形式保存到指定目录下,rotatelogs的用法可以参考这里。
- 服务器A设置好之后,就可以去备份服务器B写备份脚本了,这里假设服务器A的IP为:192.168.0.3,脚本如下:[Copy to clipboard]View Code BASH
# apache log backup#!/bin/bash # 获取昨天的日期logfilename=`date -d yesterday +%Y%m%d`# 设置日志备份文件路径backupfilepath=/var/www/logs/ # 备份错误日志文件echo "get example error log:"cd ${backupfilepath}# 获到服务器A昨天的日志文件scp root@192.168.0.3:/var/log/httpd/example_error_log/${logfilename} ./example/error/cd ${backupfilepath}example/error/# 打包压缩日志文件tar zcvf ${logfilename}.tar.gz ${logfilename}rm -rf ${logfilename} # 备份访问日志文件echo "get example access log:"cd ${backupfilepath}scp root@192.168.0.3:/var/log/httpd/example_access_log/${logfilename} ./example/access/cd ${backupfilepath}example/access/tar zcvf ${logfilename}.tar.gz ${logfilename}rm -rf ${logfilename}echo "done."
在准备运行以上脚本以前,要先确认两台服务器之间用ssh-keygen命令生成的密钥设置了信任关系,可以参考我之前写的这篇日志:Linux下用SCP无需输入密码获取文件。
然后将该脚本命名为apachelog_backup.sh保存到/var/cron/目录下。 - 确认两台服务器的备份目录都已建立好,当然事先可以自己测试一下脚本,比如到服务器A的备份目录建立一个用前一天日期命名的日志文件,内容随便,然后再到备份服务器B去先执行一下脚本,查看是否备份成功。
最后用 crontab -e 命令在linux的定时任务中加入自动执行任务,让脚本在每天凌晨12点之后自动执行,如下:30 00 * * * sh /var/cron/apachelog_backup.sh
这里我设置了每天零点30分执行脚本。
- 大功告成。
写完这篇日志后,虽然是实现了自动备份,但是时间长了就会导致备份目录内文件越来越多,不易管理,等有时间再完善一下,让日志文件按年月来分目录保存,不知道rotatelogs可不可以实现,但可以确定apache官方曾推荐过一个叫cronolog的日志分割/轮巡工具可以实现,有兴趣的朋友可以研究下。
另外如果需要用软件来分析apache日志文件的话还需要将其合并,嗯,有时间再写一篇关于日志合并分析的日志。
- Linux下Apache日志按日期分割并自动备份
- apache 日志按日期分割
- tomcat下log4j接管日志并按日期分割
- apache日志按日期进行分割
- centos中nginx按日期自动分割访问日志
- SQL2005自动定时备份数据库并按日期命名
- apache 按日期分卷日志
- Linux下apache日志(按日期存放)分析与状态查看方法
- Linux下apache日志(按日期存放)分析与状态查看方法
- Linux下apache日志(按日期存放)分析与状态查看方法
- 使用cronolog按日期分割日志
- 使用cronolog按日期分割日志
- tomcat日志catalina.out按日期分割
- Linux/Windows 下MySQL定时按日期备份数据
- Linux下 按日期时段 分析日志 shell
- 基于log4net的支持动态文件名、按日期和大小自动分割文件的日志组件
- Apache按日期切割访问日志
- nginx日志按日期自动切割脚本
- Windows Embedded从入门到精通系列课程-网址
- clientHeight,offsetHeight和scrollHeight区别
- VS2005配置CPPUnit进行单元测试
- 解密.net framework中的MSCOREE.DLL
- (二)有序数组的二分法查找
- Linux下Apache日志按日期分割并自动备份
- 原创:网络宽带测试程序与网络利用监测(cisco内部使用)
- 我的第一个Python小程序
- lucene 缺点总汇
- Java设计模式(8) —— 抽象工厂
- LED 驱动电源
- Plugin 笔记
- sql优化---oracle hint样例
- Dnn相关站点