Svn的容灾备份和数据恢复
环境声明
这里采用svn的镜像备份
搭建SVN在我的上一篇博客中:搭建部署SVN服务器
源版本路径:svn://192.168.244.134/ceshi
镜像版本: ip 192.168.244.132
建立镜像版本库:
yum install –y svn
svnadmin create /home/svn/test #创建版本库
cd /home/svn/test/hooks/
cp pre-revprop-change.tmpl pre-revprop-change
chmod a+x pre-revprop-change
vim pre-revprop-change
将最后一行的exit 1 改为 exit 0
保存退出
初始化镜像版本库:
svnsync init file:///home/svn/test/ svn://192.168.244.134/ceshi/
输入相应的root密码,以及passwd中对应的用户名和密码即可。
开启svn服务:
svnserve –d –r /home/svn/ #路径只需要到版本库的上一级即可。否则会出现报错
同步源svn:
svnsync sync file:///home/svn/test/ #以后的每次同步只需要在开启svn服务的情况下执行这条命令即可
执行结果:
同步成功!
在镜像版本中,可以看到,客户端的工作副本在/home/svn/test/test中。
当源版本服务器宕掉时,只需要将原来的url改为svn://192.168.244.132/test即可正常访问svn服务器。
为了确保每天能备份到源版本的文件,将备份工作加入任务计划:
crontab –e
0 0 * * * /usr/bin/sh /zuoye/task.sh
下面是task.sh,用于检测svn是否能正常备份
#!/bin/bash
svnsync sync file:///home/svn/test/ > /tmp/1.txt 2>&1
res=`echo $?`
date_svn=`date '+%Y%m%d'`
if [ $res == 1 ];then
touch /SvnError${date_svn}.log
cat /tmp/1.txt > /SvnError${date_svn}.log
cat /SvnError${date_svn}.log |mail -s "svn错误日志" xxxxx@qq.com
else
touch /Svn${date_svn}.log
cat /tmp/1.txt > /Svn${date_svn}.log
cat /Svn${date_svn}.log |mail -s "svn正常报告" xxxx@qq.com
fi
为了保证mail服务能启动,若mail无法发送邮件,则可试用以下操作:
yum install –y jwhois
vim /etc/mail.rc 在最后添加发邮件账户相关内容
set bsdcompat
set from=yourname @xxx.com
set smtp=smtp.qiye.163.com #若是个人网易账户,此处为smtp.163.com
set smtp-auth-user=yourname@xxx.com
set smtp-auth-password=相应邮箱密码
set smtp-auth=login