备份文件保留说明
为节省空间以及确保数据备份作用,备份文件保留机制为:
-
一个星期以内:每6小时备份一次,每天4个文件全部保存
-
一个星期以外&一个月以内:每天保留一个备份文件
-
一个月以外&3个月以内:每个月保留4个备份文件(每月06、13、20、27号保留06点的备份文件)
-
3个月以外:每个月保留一个备份文件(每月13号06点)
命令操作
#备份部分采用每6小时一次
#crontab内容
#备份 1 */6 * * * /bin/sh /root/backup.sh #删除 1 1 * * 1 /bin/sh /root/del_backup.sh
#backup.sh内容
#!/bin/bash
#crontab
#1 */6 * * * /bin/sh /*/backup.sh
now=`date +%Y%m%d%H%M%S`
#用来识别备份文件
dmpfile=backup_$now.dmp
DATA_PUMP_DIR=/u01/app/oracle/admin/moe1/dpdump
/opt/oracle/11.2.0/bin/expdp user/pass@moe1 DUMPFILE=$dmpfile DIRECTORY=DATA_PUMP_DIR full=y compression=all
tar cjf ${DATA_PUMP_DIR}/${dmpfile}.bz2 ${DATA_PUMP_DIR}/${dmpfile}
if [ -f ${DATA_PUMP_DIR}/${dmpfile}.bz2 ];then rm -rf ${DATA_PUMP_DIR}/${dmpfile};fi
#del_backup.sh内容
#!/bin/bash
#crontab
#1 1 * * 1 /bin/sh /*/del_backup.sh export bak_path=/backup
# > 90days
for val in `find ${bak_path} -mtime +90 -name "*.bz2" | grep -v 'backup_......\(1306\)'`;do rm -rf ${val};done
# > 30days && < 90days
for val in `find ${bak_path} -mtime -90 -mtime +30 -name "*.bz2" |grep -E -v 'backup_......(0606|1306|2006|2706)'`;do rm -rf ${val};done
# > 7days && < 30days
for val in `find ${bak_path} -mtime -30 -mtime +7 -name "*.bz2" |grep -E -v 'backup_........06'`;do rm -rf ${val};done
#用来创建测试文件的脚本
#!/bin/bash
yearN=$(date '+%Y')
tmpDoc="/tmp/tmpDoc/${yearN}"
mkdir -p "${tmpDoc}" && cd "${tmpDoc}" || exit 1
for((i=1;i<=12;i++));do
montht=$i
if [ "${#montht}" == "1" ];then montht="0${i}";fi
mkdir -p "${tmpDoc}/${montht}"
for((j=1;j<=31;j++));do
dayt=$j
if [ "${#dayt}" == "1" ];then dayt="0$j";fi
touch -t "${yearN}${montht}${dayt}$(date '+%H%M.%S')" "${tmpDoc}/${montht}/${dayt}.file"
done
done
2023-03-27
整合的备份脚本
#!/bin/bash
path0=/opt/mysql
backup0="$path0/backup"
tmp0="$path0/tmp"
year0=$(date '+%Y')
month0=$(date '+%m')
day0=$(date '+%d')
workdoc="$backup0/$year0/$month0"
tmpdoc="$tmp0/$year0/$month0"
#mysql backup
#2month daily
#2month~5month weekly
#5month~1year monthly
#for backup
mkdir -p "$workdoc"
mkdir -p "$tmpdoc"
/usr/bin/mysqldump -uroot -pyourpass yourdb > "$workdoc/$day0.sql"
if [ -f "$workdoc/$day0.sql" ];then
cd "$workdoc"
# tar cjf - "$day0.sql" | openssl des3 -salt -k 'yourpass' -out "$day0.bz2"
tar czf "$day0.tar.gz" "$day0.sql"
if [ -f "$workdoc/$day0.tar.gz" ];then rm -rf "$workdoc/$day0.sql";fi
fi
#for delete
#5month~1year monthly
for file in $(find "$backup0" -mtime +150 -name "*.tar.gz" | grep -v '01.tar.gz$');do
filedoc=$(echo ${file%/*} | sed "s#$backup0#$tmp0#g")
mkdir -p "$filedoc"
if ! mv "$file" "$filedoc/";then exit;fi
done
#2month~5month weekly
for file in $(find "$backup0" -mtime -150 -mtime +60 -name "*.tar.gz" | grep -v '1.tar.gz$');do
filedoc=$(echo ${file%/*} | sed "s#$backup0#$tmp0#g")
mkdir -p "$filedoc"
if ! mv "$file" "$filedoc/";then exit;fi
done
© 著作权归作者所有
下一篇: openssh openssl 升级
文章评论(0)