需要 gzip 命令支持:
#!/bin/sh tomcat_backup_dir="/打包备份目录" tomcat_dir_list=$(ps -ef | grep -oP '(?<=-Dcatalina\.base=)[^\s]*') #netty_dir_list=$(ps -ef | grep com.mapbar.mserver.netty \ #netty_dir_list=$(ps -ef | grep com.mapbar \ # | grep -oP '[^:]*(?=/lib/netty-\d.\d.\d.Final.jar)') today=$(date +%Y%m%d) function do_backup() { proj=$(basename $1) src_dir=$1/logs dst_dir=$2/$proj echo $proj for log_file in $src_dir/*; do log_date=$(basename $log_file | grep -oP '\d{4}(-\d{2}){2}') echo $log_date if [ -n "$log_date" ] && [ ${log_date//-/} -lt $today ]; then echo $log_file backup_dir="$dst_dir/${log_date:0:4}/${log_date:5:2}" if [ "${log_file##*.}" != "gz" ]; then nice -10 gzip $log_file log_file=$log_file.gz fi mkdir -p $backup_dir mv $log_file $backup_dir fi done } for tomcat_dir in $tomcat_dir_list; do do_backup $tomcat_dir $tomcat_backup_dir done