批量备份数据到指定目录脚本

backup.sh 后期数据量增大可考虑调整为增量备份(指定备份目录)

#!/bin/bash

#---------------------------------------
# 备份oa数据到指定目录下
# author: SenSen 1050575278
# date: 2022/04/13
# todo 调整为增量备份(当前数据量有限,暂不处理)
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------

#所在目录
dir='/web/oa/'
dist='/bak_oa/'
#指定天开始备份
backDay=(06 14 21 28)
dayNum=`date +"%d"`
#单次备份的oa数量
perNum=10
day=`date +"%Y%m%d"`
dayFile='/backup/'${day}
#自动获取系统目录文件 仅可包含oa系统文件
sysDir=`ls /web/oa`
num=0
tmp=()

for i in "${backDay[@]}"
  do
    if [[ "${i}" == "${dayNum}" ]]; then

      if [ ! -f "${dayFile}" ]; then
        touch ${dayFile}
      fi

      #获取指定数量的未备份oa
      for f in ${sysDir}
        do
          #判断是否今日已执行备份
          if [ `grep -c ${f} ${dayFile}` -eq 0 ];then
            #记入到新数组
            tmp[${num}]=${f}
            ((num++))
            if [ ${num} -eq ${perNum} ]; then
              break
            fi
          fi
        done

      #执行备份
      for f in "${tmp[@]}"
        do
          curtime=`date +"%Y/%m/%d %H:%M:%S"`
          cd ${dir}${f}
          echo "${f}" >> ${dayFile}
          tar -zcf ${dist}/${f}.tar.gz public/uploads/attach public/uploads/seal_apply public/uploads/ueditor public/uploads/work .env
          echo "${curtime} ${f} done" >> /backup/site.log
        done
    fi
  done

Tags: 脚本

添加新评论