shell脚本每天定时打包日志文件(crontab)

发布时间:2021-01-24编辑:脚本学堂
分享一个用于定时打包日志文件的shell脚本,结合crontab在每天的指定时间将日志文件整理打包,不错的shell脚本实例,需要的朋友参考下。

如何用shell/ target=_blank class=infotextkey>shell脚本定时打包日志文件

此脚本功能:
每天将应用程序目录下的analyzed目录下前一天的日志压缩并保存到archive目录下,目录结构类似archive/2014/02/22.tar.gz。
 
添加cron定时任务
 

1 1 * * * /opt/etc/log/archive.sh /opt/var/log/prod >> /opt/etc/log/archive.log 

对crontab不了解的朋友,请移步至:

以获得相关帮助。
 
例子,有于定时打包日志文件的shell脚本 archive.sh。
 

#!/bin/bash 
# 定时打包日志
# www.jb200.com
#

if [ $# -eq 0 ] 
then 
   echo "Usage: `basename $0` /opt/var/log/prod" 
   exit $E_BADARGS 
fi 
 
APP_PATH=$1 
APP_LIST_FILE=appList 
ANALYZED_FOLDER=analyzed 
ARCHIVE_FOLDER=archive 
echo 'App path: '$APP_PATH 
 
##Save apps to file 
>$APP_LIST_FILE 
ls -F $APP_PATH|grep /$ >> $APP_LIST_FILE ##将目标目录下的应用程序名字保存起来 
 
##Archive log of apps by day 
LAST_DAY_YEAR=$(date -d last-day +%Y) 
LAST_DAY_MONTH=$(date -d last-day +%m) 
LAST_DAY_DAY=$(date -d last-day +%d) 
echo 'Last day: '$LAST_DAY_YEAR$LAST_DAY_MONTH$LAST_DAY_DAY 
cat $APP_LIST_FILE | while read line; do 
  CURRENT_APP_PATH=$APP_PATH/$line 
  echo 'Current app path: '$CURRENT_APP_PATH 
  mkdir -p "$CURRENT_APP_PATH/$ARCHIVE_FOLDER" 
  ##Move last day logs 
  mkdir -p "$CURRENT_APP_PATH/$ARCHIVE_FOLDER/$LAST_DAY_YEAR/$LAST_DAY_MONTH/$LAST_DAY_DAY" 
  LOG_FILES=$CURRENT_APP_PATH/$ANALYZED_FOLDER/$LAST_DAY_YEAR-$LAST_DAY_MONTH-$LAST_DAY_DAY"*" 
  mv $LOG_FILES $CURRENT_APP_PATH/$ARCHIVE_FOLDER/$LAST_DAY_YEAR/$LAST_DAY_MONTH/$LAST_DAY_DAY 
  ##Compress logs 
  ZIPPED_FILE=$LAST_DAY_DAY".tar.gz" 
  cd $CURRENT_APP_PATH/$ARCHIVE_FOLDER/$LAST_DAY_YEAR/$LAST_DAY_MONTH 
  tar czf $ZIPPED_FILE $LAST_DAY_DAY 
  rm -rf $LAST_DAY_DAY 
done
exit 0