暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

简单文件备份shell脚本

运维DevOps 2024-09-30
137

简单的文件备份脚本,记录下,需要的时候可直接拿来使用而不用重新去写

脚本实现目的:备份jar包文件,当备份目录中不存在备份文件的时候,执行备份,如果已经存在了备份文件,那么对备份时间进行比对,如果当前日期已经备份过了,就不再备份,对于通过脚本实现回滚更加方便,如果没有就执行备份

脚本内容:

    #!/bin/bash
    : '
    @func: 备份jar包,如果backup中有今天备份的,就不再备份(方便回滚),如果没有就备份
    @datetime: 20240929
    @author: gongguan
    '
    set -e
    set -u
    cd $(dirname $0)
    dateT=$(date "+%Y%m%d-%H:%M:%S")
    #截取时间的年月日部分
    ymd=$(echo ${dateT} | awk -F "-" '{print $1}')
    filename="Business-API"
    declare -A array
    declare -A array1
    #判断backup目录下是否存在filename,如果不存在,直接执行cp,否则进行判断
    if $(find ./backup -type f -name "${filename}*" | grep -q .);then
    for i in $(ls backup/${filename}*)
    do
    if [ -n "$i" ];then
    #截图jar包中的年月日部分
    bd=$(echo ${i} | awk -F "-" '{print $5}')
    array[${i}]=${bd}
    fi
    done
    : '
    判断Jar的年月日部分和当前备份的时间年月日部分是否相等,如果相等,设置array1数据的value为1,否则为0
    array1的key为获取的当前年月日的值
    '
    for i in ${array[@]}
    do
    if [[ "$i" == "$ymd" ]];then
    array1[${i}]=1
    else
    array1[${i}]=0
    fi
    done
    : '
    计算array1中元素值的和,如果和大于0,说明数组中年月日(key的值)是有今天的,此时就不再备份,否则进行备份
    '
    sum=0
    for i in ${array1[@]}
    do
    sum=$[ $sum + $i ]
    done
    if [ $sum -eq 0 ];then
    cp ./Business-API-1.0-SNAPSHOT.jar backup/Business-API-1.0-SNAPSHOT-${dateT}.jar
    fi
    else
    cp ./Business-API-1.0-SNAPSHOT.jar backup/Business-API-1.0-SNAPSHOT-${dateT}.jar
    fi



    文章转载自运维DevOps,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论