#!/bin/bash
#History
######################################################
#update       author

# touch /root/sh/nginx_cut_log.sh; chmod u+x /root/sh/nginx_cut_log.sh
# 00 0 * * *  root /root/sh/nginx_cut_log.sh >> /root/sh/nginx_cut_log.log 2>&1
########## variable #######################################
nginx_dir=/opt/nginx
nginx_log_dir=/opt/nginx/logs
logs_bakpath=/opt/data_bak/nginx_log
year=$(date -d "yesterday" +"%Y")
month=$(date -d "yesterday" +"%m")
delyear=$(date -d "1 months ago" +"%Y")
delmonth=$(date -d " 2 months ago"  +"%m")
deldays=30
cut_log_path=${logs_bakpath}/${year}/${month}

export LANG=C
export LC_ALL=C
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

####### do ##############################################
if [ ! -d "$cut_log_path" ];then
        mkdir -p ${logs_bakpath}/${year}/${month}
fi

echo ""
echo ""
echo "`date` start."
echo "##################################"
#### move yesterday logs ####
echo "`date` move yesterday logs."
if [ -d "$nginx_log_dir" ]; then
   cd $nginx_log_dir
   ls | grep ".log" | awk -F '.log' '{print $1}' > /tmp/nginxloglist.txt
else
   echo "log backup directory does not exist, exit"
   exit 1
fi

for logfilename in `cat /tmp/nginxloglist.txt`
do
   cat "$logfilename".log >"$cut_log_path"/"$logfilename"_$(date -d "yesterday" +"%Y%m%d").log
   echo "">"$logfilename".log
done


### gzip ###
#for logfilename in `cat /tmp/nginxloglist.txt`
#do
#    gzip "$cut_log_path"/"$logfilename"_$(date -d "yesterday" +"%Y%m%d").log
#done

#### Delete 1 months before the log ####
cd "$logs_bakpath"/"$delyear"
if [ -d "$delmonth" ];then
   rm -rf "$delmonth"
   echo "`date` Delete ${logs_bakpath}/${delyear}/${delmonth}"
else
   echo "`date` Did not delete the directory."
fi

if [ -d "$logs_bakpath" ]; then
    cd $logs_bakpath
    echo "`date` Deletes the file list."
    find $logs_bakpath -maxdepth 3 -type f -name "*.log" -mtime +"$deldays"
    find $logs_bakpath -maxdepth 3 -type f -name "*.log" -mtime +"$deldays" | xargs rm -rf
else
    echo "`date` Log directory does not exist, exit."
    exit
fi
