2022年4月
按月全量备份/按天增量备份 脚本
backup.sh
月初全量备份,之后按天增量备份。建议将历年附件等归档内容下载备份后,线上不再备份此数据。每月备份目录可自动上传到OSS中。
#!/bin/bash
# 整站文件按月备份并同步到oss
# 按天增量备份
# /web仅保存增量备份
tar=/bin/tar
projectPath=/web_lv/
project=folderName
#增量备份存放位置
bakPath=/web/site/"$project"
#全量备份存在位置
fullPath=/web_lv/full_bak
ym=`date +%Y%m`
ymd=`date +%Y%m%d`
nowMonth=`date +%Y%m01`
last=`date -d"$nowMonth last month" +%Y%m`
monthBakPath=$fullPath/$ym
gidShot=Gid$project$ym
fullName=$ym
dailyName=$ymd
log=$bakPath/$project.log
chk_month()
{
if [ -e "$monthBakPath"/"$project"_"$ym"_month.tar.gz ];then
echo ""$project"_"$ym"_month.tar.gz file exist!! ====`date +%Y-%m-%d-%T` " >>$log
else
tar_month
fi
}
chk_daily()
{
while [ -e "$bakPath"/"$ym"/"$project"_"$dailyName"_daily.tar.gz ]
do
dailyName=`echo "$dailyName + 0.1" | bc `
done
}
#增量备份
tar_daily()
{
cd $projectPath
echo "START=====`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$dailyName"_daily.tar.gz" >> $log
sleep 3
$tar -g $fullPath/$gidShot -zcf $bakPath/$ym/"$project"_"$dailyName"_daily.tar.gz --exclude=runtime --exclude=app --exclude=sensen --exclude=vendor --exclude=public/tmp --exclude=public/uploads/tmp --exclude=public/uploads/attach/2021 $project
echo "END========`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$dailyName"_daily.tar.gz" >> $log
}
#全量备份
tar_month()
{
touch $fullPath/$gidShot
cd $projectPath
echo "START=====`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$fullName"_month.tar.gz" >> $log
$tar -g $fullPath/$gidShot -zcf $monthBakPath/"$project"_month.tar.gz --exclude=runtime --exclude=app --exclude=sensen --exclude=vendor --exclude=public/tmp --exclude=public/uploads/tmp --exclude=public/uploads/attach/2021 $project
echo "END========`date +%Y-%m-%d-%T` ==== CREATE "$project"_"$fullName"_month.tar.gz" >> $log
}
# 废弃方法,直接将全量及增量数据备份到指定目录
move_full()
{
echo "start----move" >> $log
mv -f $monthBakPath/"$project"_month.tar.gz /web/site/full/
echo "end----move" >> $log
}
backup()
{
if [ -d $monthBakPath ]; then
#chk_month
chk_daily
tar_daily
else
#delete last month
echo "start----delete last month data" >> $log
rm -rf $bakPath/$last
rm -rf $fullPath/*
mkdir -p $fullPath/$ym
mkdir -p $bakPath/$ym
tar_month
#move_full
fi
}
if [ -d $bakPath ];then
backup
else
mkdir -p $bakPath
backup
fi
查看dm-0对应的设备映射
在使用iostat
命令时可能会看到dm-xx的设备(即Device Mapper缩写),为linux提供的一种从逻辑设备到物理设备的映射框架机制,如LVM2都是基于该机制实现的。lvdisplay|awk '/LV Name/{n=$3} /Block device/{d=$3; sub(".*:","dm-",d); print d,n;}'
pdf.js浏览器打印pdf文件模糊有阴影不清晰
pdf.js
默认打印分辨率为150,调整为900相对更清晰。
修改viewer.js
中的this._printResolution = 900;
或
printResolution: {
value: 900,
kind: OptionKind.VIEWER
},
从备份数据中恢复脚本
recover.sh
将backup.sh
脚本备份后的数据进行恢复(恢复前需先确保已部署系统)
#!/bin/bash
#---------------------------------------
# 从备份数据中恢复OA数据
# author: SenSen 1050575278
# date: 2022/04/13
# 需先创建完oa系统后方可使用
# 注意:所有脚本需测试后方可使用!!!
#---------------------------------------
read -p "Warning! Enter 'recover' to continue : " input
if [ "$input" == 'recover' ]; then
oaDir='/web/oa/'
backDir='/bak_oa/'
sysDir=`ls /web/oa`
for f in ${sysDir}
do
if [ ! -f "${backDir}${f}.tar.gz" ]; then
echo "${f}.tar.gz not found" >> /backup/recover.log
continue
fi
curtime=`date +"%Y/%m/%d %H:%M:%S"`
tar -zxf ${backDir}${f}.tar.gz -C ${oaDir}${f}
echo "${curtime} ${f} done" >> /backup/recover.log
done
else
echo "Error: invalid input"
fi
批量备份数据到指定目录脚本
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