linux下SVN定时备份并删除历史备份
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下SVN定时备份并删除历史备份相关的知识,希望对你有一定的参考价值。
利用svnadmin hotcopy可以实现完全备份,但不能进行增量备份。svnadmin hotcopy是将整个库都“热”拷贝一份出来,包括库的钩子脚本、配置文件等;任何时候运行这个脚本都得到一个版本库的安全拷贝,不管是否有其他进程正在使用版本库。
优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。
缺点是:比较耗费硬盘,需要有较大的硬盘支持。
在/data/svnbackup目录建立备份脚本svnbak.sh,假如svn仓库路径为/home,要备份到/data/svnbackup/
#!/bin/bash
#
# Filename: svnbak.sh
# Revision: 1.0
# Date: 2019/02/21
# Author: Scott
# Email: [email protected]
# Description: SVN完全备份
# Notes: 将脚本加入crontab中,每天定时执行
MAXDAYS=7 # 备份保留最大天数
##Subversion的安装目录及执行文件
SVN_HOME=/usr/bin
SVN_ADMIN=$SVN_HOME/svnadmin
SVN_LOOK=$SVN_HOME/svnlook
##配置库根目录
SVN_REPOROOT=/home
##增量备份文件存放路径
BAKDIR=/data/svnbackup
date=$(date ‘+%Y%m%d%H%M%S‘)
RAR_STORE=$BAKDIR/$date
BAKLOG=${BAKDIR}/$date.log # 定义备份日志
if [ ! -d "$RAR_STORE" ];then
mkdir -p $RAR_STORE
exec 1>$BAKLOG
exec 2>&1
set -x
fi
# 删除历史备份
$find $BAKDIR/ -type f -mtime +$(expr $MAXDAYS - 1) -exec rm -f {} ;
##读取项目库列表
cd $SVN_REPOROOT
for name in $(ls)
do
##开始做全量备份
$SVN_ADMIN hotcopy $SVN_REPOROOT/$name $RAR_STORE/$name
$SVN_LOOK youngest $RAR_STORE/$name
done
cd $BAKDIR
# 压缩备份
tar cvzf $date.tar.gz $date/
rm -rf $date
设置定时crontab 每天23点59分开始执行脚本:
yum install crontabs -y
vi /etc/crontab
59 23 * * * /bin/bash /data/svnbackup/svnbak.sh
以上是关于linux下SVN定时备份并删除历史备份的主要内容,如果未能解决你的问题,请参考以下文章
转-让linux每天定时备份MySQL数据库并删除五天前的备份文件