利用shell脚本按天分割并压缩nginx日志

我的服务器运行了十多个网站,有的访问高点的,日志都有几百M了,影响性能,虽然可以把access.log的地址设置成/dev/null来屏蔽日志,但是总觉不妥,现在通过一个脚本来按天分割并压缩日志。

我的网站的路径结构比较,如果网址是www.abc.com

那么我的网站的根目录是:/var/www/www.abc.com/html

而对应的日志的目录则是:/var/www/www.abc.com/logs

其脚本大致如下

#!/bin/bash
array=("www.aaa.com" "www.bbb.com" "www.ccc.net"  "www.ddd.com")
for value in ${array\[*\]}
do
name="/usr/share/nginx/html/${value}/logs"
mkdir -p -m 744 ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/access
mkdir -p -m 744 ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/error
tar -zcvf ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/access/$(date -d "yesterday" +"%Y-%m-%d").tar.gz -C ${name}/ access.log
chmod 744 ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/access/$(date -d "yesterday" +"%Y-%m-%d").tar.gz
: >${name}/access.log
tar -zcvf ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/error/$(date -d "yesterday" +"%Y-%m-%d").tar.gz -C ${name}/ error.log
chmod 744 ${name}/histroy/$(date -d "yesterday" +"%Y-%m")/error/$(date -d "yesterday" +"%Y-%m-%d").tar.gz
: >${name}/error.log
done

值得注意的是 ${array[*]}要写完整,如果只写${array},只能得到第一个值。