注:红色为注释说明的内容,绿色为示例内容,请以项目实际情况修改操作
#!/bin/bash
##今天
#TAR_DATE=`date +%Y-%m-%d`
##昨天,一般备份选择昨天,因为备份发生在凌晨昨天的日志一定是完整的
TAR_DATE=`date -d last-day +%Y-%m-%d`
##当前的时间,命名文件必须使用
TAR_TIME=`date +%H%M%S`
##定义删除文件的时间,留1-2天的日志文件方便研发或测试用来排错。
##两天前
DEL_DATE=`date -d '2 days ago' +%Y-%m-%d`
##定义日志文件的位置,server为中间件服务日志,bizlog为业务日志
SERVER_PATH=/opt/appl/olio/tomcat/log/
BIZLOG_PATH=/opt/appl/olio/tomcat/logs/olio/
##脚本执行输出日志
LOGFILE_PATH=/var/log/logarch.log
##日志输出方法
loginfo()
{
echo "$(date "+%Y-%m-%d_%H:%M:%S") [EXCU RECORD] $1" >> $LOGFILE_PATH
}
###开始操作日志(拿olio项目的app日志举例,以下access、interface等与此相同)
loginfo "App logfiles will be compressed."
cd $BIZLOG_PATH/app
tar zcvf olio.log-"$TAR_DATE"-"$TAR_TIME".tar.gz olio.log."$TAR_DATE"-* --remove-files >> $LOGFILE_PATH 2>&1
tar zcvf fspf-statistics.log-"$TAR_DATE"-"$TAR_TIME".tar.gz fspf-statistics.log."$TAR_DATE"-* --remove-files >> $LOGFILE_PATH 2>&1
loginfo "App logfiles Compression end."
loginfo "App logfiles,Compressed will be deleted."
##如果gz文件要归档在本机就不需要开启以下行,
#rm -rf olio.log-"$DEL_DATE"-* >> $LOGFILE_PATH 2>&1
#rm -rf fspf-statistics.log-"$DEL_DATE"-* >> $LOGFILE_PATH 2>&1
loginfo "Access logfiles was deleted."
00 02 * * * /opt/appl/assist/loggz/logarch_project.sh > /dev/null 2>&1
在日志服务器创建脚本如下内容rsync-172.16.4.71-project.sh:
#!/bin/sh
##归档文件位置变量定义
APP_IP=172.16.4.71
RYSNC_BASE=/logarch/CentLog
RSYNC_HOME=$RYSNC_BASE/$APP_IP
##脚本日志位置定义
LOG_BASE=/backup/rsync/log
LOG_HOME=$LOG_BASE/$APP_IP
LOG_FILE=$LOG_HOME/rsync_$(date +%Y-%m-%d)
if [ ! -d "$RSYNC_HOME" ]; then
mkdir $RSYNC_HOME
fi
if [ ! -d "$LOG_HOME" ]; then
mkdir $LOG_HOME
fi
##日志输出
loginfo()
{
echo "$(date "+%Y-%m-%d_%H:%M") [ANIHC SAYS] $1" >>$LOG_FILE
}
##同步服务日志归档
##For dcqs jboss log
loginfo "==========Synchronizing DCQS JBoss log=========="
/usr/bin/rsync -arP--include "*.gz" --include="*/" --exclude "*" --password-file=/etc/rsyncd.pwd_dcqs rsync@${APP_IP}::jbslog_dcqs ${RSYNC_HOME}/dcqs/jbslog >>$LOG_FILE
loginfo "==========Synchronization done.=========="
loginfo ""
##同步业务归档文件
##for dcqs biz log
loginfo "==========Synchronizing DCQS Business log=========="
/usr/bin/rsync -arP --include "*.gz" --include="*/" --exclude "*" --password-file=/etc/rsyncd.pwd.dcqs rsync@${APP_IP}::bizlog_dcqs ${RSYNC_HOME}/dcqs/bizlog/dataCenter >> $LOG_FILE
loginfo "==========Synchronization done.=========="
loginfo ""
#把此脚本写入到日志备份服务器的定时任务中
00 03 * * * /xxxx/rsync-172.16.4.71-project.sh > /dev/null 2>&1
注意:rsync 命令中的源地址也就是文件提供方rsyncd.conf中定义的模块。