根据发布压缩包中的目录备份服务器上的相应目录到备份目录

#!/usr/bin/bash

curr_dir="/data/update"

Date=`date +"%Y%m%d"`
today=`date +"%Y%m%d-%H%M%S"`

#comp_pg="web-0420.zip"
#comp_pg="web-0420v1.zip"
comp_pg="ceshi.zip"

home_dir=""

dst_dir=""


#####日志格式定义及路径输出
logdir="/data/log/back"          #日志路径
log=$logdir/log"$today".log                            #日志文件 
is_font=1                                      #终端是否打印日志: 1打印 0不打印 
is_log=1                                       #是否记录日志: 1记录 0不记录
[[ -d $logdir ]]||mkdir -p $logdir             #确保日志目录存在


datef(){
    date "+%Y-%m-%d %H:%M:%S"
}

print_log(){
    if [[ $is_log -eq 1  ]];then
        [[ -d $logdir ]] || mkdir -p $logdir
        echo -e "[ $(datef) ] $1" >> $log
    fi
    if [[ $is_font -eq 1  ]];then
        echo -e "[ $(datef) ] $1"
    fi
}

#####压缩包目录判断,因有个目录比较特殊,其中有个子目录不更新,但是太大,所以单独区分,tar格式用 tar -tf
judge_dir() {
    wwwroot_sum=$(unzip -l $comp_pg |grep wwwroot|wc -l)
    if [[ $wwwroot_sum -eq 0 ]];then
        print_log "没有wwwroot目录,不需要备份他"
        back_dir=$(unzip -l $comp_pg |awk '{print $4}' |grep /$|awk -F"/" '{print $1}' |sort -rn |uniq -c|awk '{print $2}')
        for dir in $back_dir
        do
            #cp -ar $home_dir/$dir $dst_dir/$dir/$today
            if [[ $? -eq 0 ]];then
                print_log "$dir 备份成功"
            else 
                print_log "$dir 备份失败"
            fi
        done
    else
        print_log "wwwroot目录存在,需要单独备份他"
        back_dir=$(unzip -l $comp_pg |grep -v wwwroot |awk '{print $4}' |grep /$|awk -F"/" '{print $1}' |sort -rn |uniq -c|awk '{print $2}')
                for dir in $back_dir
                do
                       # cp -ar $home_dir/$dir $dst_dir/$dir/$today
                        if [[ $? -eq 0 ]];then
                                print_log "$dir 备份成功"
                        else
                                print_log "$dir 备份失败"
                        fi
                done    
        unzip -l $comp_pg |grep wwwroot|awk '{print $4}' |grep -v /$ >$curr_dir/$today.txt
        while read line 
        do
            echo "${line%/*}" >> $curr_dir/"$Date"_bak.txt
        done < $curr_dir/$today.txt
        www_back_dir=`cat $curr_dir/"$Date"_bak.txt |sort -rn |uniq -c`
        for www_back in $www_back_dir
        do 
            # cp -ar $home_dir/$www_back $dst_dir/$www_back$today
            if [[ $? -eq 0 ]];then
                                print_log "$www_back 备份成功"
                        else
                                print_log "$www_back 备份失败"
                        fi
        done

    fi

}

cd $curr_dir
rm -f *.txt

judge_dir
 

转载于:https://my.oschina.net/u/2343310/blog/884254

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值