linux svn 备份脚本,SVN热备份脚本
SVN热备份脚本
2011-08-03 徐磊
#!/bin/sh
#########################################################
# Script to do incremental rsync backups
# modidfy: wanjie.info
# date: 2010/06/04
# 这个脚本不是xulei写的,我只是拿来主义,当然如果大家看不明白,可以提问,给予解释
#########################################################
###################################
# svn backup log path
# - This is used to log result
###################################
LogFile=~/tmp/svnbackup/svnback.log
DATE=`date +%Y%m%d`
###################################
# mail address for status updates
# - This is used to email you a status report
###################################
MAILADDR=webmaster@wanjie.info
###################################
# HOSTNAME and project list
# - This is also used for reporting
###################################
ProjectLst=~/tmp/svnbackup/projectlist.txt
###################################
# backup directory
# - This is the path to the backup directory
###################################
BackDir=~/tmp/svnbackup/$DATE
BACKUPDIR=~/tmp/svnbackup/$DATE
###################################
# svn directory
# - This is the path to the directory you want to archive
###################################
SVNDIR=~/svn
###################################
# svnadmin path
# - This is the path to the directory you want to archive
###################################
SVNADMIN=/usr/bin/svnadmin
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin
# our actual rsyncing function
# 这个函数主要是在备份日志里面打上时间,用了个前面date命令获取到的日期
do_accounting()
{
echo " " >> $LogFile
echo " " >> $LogFile
echo "###########################" >> $LogFile
echo "$DATE" >> $LogFile
echo "###########################" >> $LogFile
cd $BackDir
}
# do_svndump就是这个脚本最主要的部分,通过使用svnadmin dump命令
# 来进行备份。对于SVN的Repository来说,不同数据仓储是按文件夹的形式
# 进行管理的,备份出来的是xxx.dump,这个文件是相当有用处的,无论你是
# 在linux下恢复配置库,还是windows下恢复都可以使用。脚本里面决定是否进行
# 新的备份,是通过xxx.youngest的日志文件的内容来判断的。
do_svndump()
{
PROJECTLIST=`cat $ProjectLst`
cd $SVNDIR
for project in $PROJECTLIST
do
echo "begin to dump $project databases" >> $LogFile
if [ ! -f $BACKUPDIR/$project.dump ]
then
YOUNGEST=`svnlook youngest $project`
svnadmin dump $project > $BACKUPDIR/$project.dump
echo "OK,dump file successfully!!"
echo "$YOUNGEST" > $BACKUPDIR/$project.youngest
else
echo "$project.dump existed,will do increatment job" >> $LogFile
if [ ! -f $BACKUPDIR/$project.youngest ]
then
echo "error, no youngest check!" >> $LogFile
else
PREVYOUNGEST=`cat $BACKUPDIR/$project.youngest`
NEWYOUNGEST=`svnlook youngest $project`
if [ $PREVYOUNGEST -eq $NEWYOUNGEST ]
then
echo " no database updated!" >> $LogFile
else
LASTYOUNGEST=`expr $PREVYOUNGEST + 1`
echo "last youngest is $LASTYOUNGEST" >> $LogFile
svnadmin dump $project --revision $LASTYOUNGEST:$NEWYOUNGEST --incremental > $BACKUPDIR/$project-$LASTYOUNGET-$NEWYOUNGEST.$DATE
echo "$NEWYOUNGEST" > $BACKUPDIR/$project.youngest
fi
fi
fi
done
}
# our post rsync accounting function
# 这个就是把你日志文件的内容当做邮件发送
do_mail()
{
mail $MAILADDR -s svn-back_log < $LogFile
}
# some error handling and/or run our backup and accounting
do_accounting && do_svndump && do_mail
-------------------------------------------------------------------------------------------------------
这个是比较麻烦的,要是想简单,可以直接hotcopy之后,然后就tar压缩,不用dump备份,因为dump是相当的花时间的。要是天天都备份的话,就很悲剧。
脚本的衍生就是,你可以把你备份出来的东西放置该机器的ftp上,然后再用其他的机器通过脚本,拷走配置库的备份,因为谁都不知道svn服务器是不是会down掉,要是down掉了,一旦你的备份又是在svn服务器上,那就白备份了。
0
该文章对我有帮助
359°|3568 人阅读|3
条评论
金鑫 2011-08-03
要是在配合 注释 就完美了 呵呵
徐磊 2011-08-03
金鑫: 要是在配合 注释 就完美了 呵呵ok 没问题 重新编辑下
刘旸 2011-08-15
呵呵,还以为是keepalived的脚本呢
请 登录 后发表评论
linux svn 备份脚本,SVN热备份脚本相关推荐
- linux定时备份mysql数据库文件脚本
#!/bin/sh #chkconfig: 2345 80 90workdir=$(cd $(dirname $0); pwd)rm -rf $workdir/$(date -d "x we ...
- linux备份svn仓库脚本,SVN服务备份操作步骤分享
SVN服务备份操作步骤 1.准备源服务器和目标服务器 源服务器:192.168.1.250 目标服务器:192.168.1.251 root/rootroot 2.对目标服务器(251)装SVN服务器 ...
- linux svn 增量备份脚本,svn全量和增量备份详解(示例代码)
1.svn的安装: yum安装: yum install -y subversion mkdir /data/svn svnadmin create project-1 svnadmin create ...
- [Linux] PHP程序员玩转Linux系列-自动备份与SVN
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- Linux svn备份和还原
转自: http://spiritfrog.iteye.com/blog/448578 + http://magnet2008.iteye.com/blog/586578 备份策略 ========= ...
- sqlserver在linux数据备份,SQLServer数据库之sqlserver for linux自动备份数据库脚本
本文主要向大家介绍了SQLServer数据库之sqlserver for linux自动备份数据库脚本,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 不多说直接上脚本 # ...
- Linux自动备份MySQL数据库脚本代码
Linux自动备份MySQL数据库脚本代码 下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行 在脚本中可设置需要备份的数据库表清单,并且 ...
- 关于svn、git生成版本号脚本的再次改进
自从很久之前写了<SVN.GIT生成版本号>和<关于svn.git生成版本号脚本的改进>两篇文章后,自以为不会再修改了,结果却不如人意,里面的的脚本还是有bug,现在又要进行再 ...
- linux 自动备份脚本
写作一个备份/etc目录的脚本,要求:将/etc目录下的所有文件cp到/var/backups目录下 的以当天的日期命名的目录中例如(/var/backups/etc.20140809). 并且判断前 ...
最新文章
- python手机版下载官方-Python
- 关于HBITMAP,CBITMAP,BITMAP的转换以及图像显示的一点归纳
- 傅里叶变换及其应用 pdf_级数的欧拉变换及其应用
- 发生在“注解”@的那些事儿
- 遍历Map keySet和entrySet
- 孙宇java_[JAVA] 孙宇老师Struts2+Hibernate4+Maven+EasyUI+SpringMvc+Spring+Mybatis+Maven整合课程...
- 网络计算机热词,2017年的首个网络热词就这样被刷屏了!
- 多址接入技术TDMA CDMA FDMA Aloha等
- OAuth2.0 原理流程及其单点登录和权限控制
- linuxoracle静默安装应答文件修改_巧用组策略分发软件—让IT不再手忙脚乱地奔走在各个工位安装软件...
- nginx 代理静态资源报 403
- 谭浩强《C语言程序设计第五版》第二章学习笔记
- 1.7 Go语言和其它编程语言的对比
- 在matlab中,简单地利用RS485协议对伺服电机进行控制
- JavaScript逻辑训练题(二)
- Photoshop去除拍摄手写笔记背景
- ad引脚名字设置_AD软件管脚名称如何放置负信号?
- vue中使用require动态获取图片地址
- 前端技术:Vue+elementUI 饿了吗UI+CRUD,创建图书管理系统
- 自动发票校验 Auto Invoice Verification