批量备份数据到指定目录脚本
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