博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
根据发布压缩包中的目录备份服务器上的相应目录到备份目录
阅读量:5773 次
发布时间:2019-06-18

本文共 1861 字,大约阅读时间需要 6 分钟。

hot3.png

#!/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

你可能感兴趣的文章
sed 替换基础使用
查看>>
高性能的MySQL(5)创建高性能的索引一B-Tree索引
查看>>
附件3:eclipse memory analyze使用教程
查看>>
oracle备份与恢复--rman
查看>>
Postfix邮件发送和接收实验
查看>>
图片变形的抗锯齿处理方法
查看>>
Effective C++ Item 32 确保你的 public 继承模子里出来 is-a 关联
查看>>
phpstorm安装laravel-ide-helper实现自动完成、代码提示和跟踪
查看>>
Resume简历中装B的词汇总结大全
查看>>
python udp编程实例
查看>>
TortoiseSVN中图标的含义
查看>>
js原生继承之——构造函数式继承实例
查看>>
linux定时任务的设置
查看>>
[CareerCup] 13.3 Virtual Functions 虚函数
查看>>
[Angular 2] ng-model and ng-for with Select and Option elements
查看>>
Visio中如何让重叠图形都显示
查看>>
Tasks and Back stack 详解
查看>>
关于EXPORT_SYMBOL的作用浅析
查看>>
成功的背后!(给所有IT人)
查看>>
在SpringMVC利用MockMvc进行单元测试
查看>>