简单的文件备份脚本,记录下,需要的时候可直接拿来使用而不用重新去写
脚本实现目的:备份jar包文件,当备份目录中不存在备份文件的时候,执行备份,如果已经存在了备份文件,那么对备份时间进行比对,如果当前日期已经备份过了,就不再备份,对于通过脚本实现回滚更加方便,如果没有就执行备份
脚本内容:
#!/bin/bash: '@func: 备份jar包,如果backup中有今天备份的,就不再备份(方便回滚),如果没有就备份@datetime: 20240929@author: gongguan'set -eset -ucd $(dirname $0)dateT=$(date "+%Y%m%d-%H:%M:%S")#截取时间的年月日部分ymd=$(echo ${dateT} | awk -F "-" '{print $1}')filename="Business-API"declare -A arraydeclare -A array1#判断backup目录下是否存在filename,如果不存在,直接执行cp,否则进行判断if $(find ./backup -type f -name "${filename}*" | grep -q .);thenfor i in $(ls backup/${filename}*)doif [ -n "$i" ];then#截图jar包中的年月日部分bd=$(echo ${i} | awk -F "-" '{print $5}')array[${i}]=${bd}fidone: '判断Jar的年月日部分和当前备份的时间年月日部分是否相等,如果相等,设置array1数据的value为1,否则为0array1的key为获取的当前年月日的值'for i in ${array[@]}doif [[ "$i" == "$ymd" ]];thenarray1[${i}]=1elsearray1[${i}]=0fidone: '计算array1中元素值的和,如果和大于0,说明数组中年月日(key的值)是有今天的,此时就不再备份,否则进行备份'sum=0for i in ${array1[@]}dosum=$[ $sum + $i ]doneif [ $sum -eq 0 ];thencp ./Business-API-1.0-SNAPSHOT.jar backup/Business-API-1.0-SNAPSHOT-${dateT}.jarfielsecp ./Business-API-1.0-SNAPSHOT.jar backup/Business-API-1.0-SNAPSHOT-${dateT}.jarfi
文章转载自运维DevOps,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




