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热备份脚本相关推荐

  1. linux定时备份mysql数据库文件脚本

    #!/bin/sh #chkconfig: 2345 80 90workdir=$(cd $(dirname $0); pwd)rm -rf $workdir/$(date -d "x we ...

  2. linux备份svn仓库脚本,SVN服务备份操作步骤分享

    SVN服务备份操作步骤 1.准备源服务器和目标服务器 源服务器:192.168.1.250 目标服务器:192.168.1.251 root/rootroot 2.对目标服务器(251)装SVN服务器 ...

  3. linux svn 增量备份脚本,svn全量和增量备份详解(示例代码)

    1.svn的安装: yum安装: yum install -y subversion mkdir /data/svn svnadmin create project-1 svnadmin create ...

  4. [Linux] PHP程序员玩转Linux系列-自动备份与SVN

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  5. Linux svn备份和还原

    转自: http://spiritfrog.iteye.com/blog/448578 + http://magnet2008.iteye.com/blog/586578 备份策略 ========= ...

  6. sqlserver在linux数据备份,SQLServer数据库之sqlserver for linux自动备份数据库脚本

    本文主要向大家介绍了SQLServer数据库之sqlserver for linux自动备份数据库脚本,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 不多说直接上脚本 # ...

  7. Linux自动备份MySQL数据库脚本代码

    Linux自动备份MySQL数据库脚本代码 下面这段Linux的Shell脚本用于每日自动备份MySQL数据库,可通过Linux的crontab每天定时执行 在脚本中可设置需要备份的数据库表清单,并且 ...

  8. 关于svn、git生成版本号脚本的再次改进

    自从很久之前写了<SVN.GIT生成版本号>和<关于svn.git生成版本号脚本的改进>两篇文章后,自以为不会再修改了,结果却不如人意,里面的的脚本还是有bug,现在又要进行再 ...

  9. linux 自动备份脚本

    写作一个备份/etc目录的脚本,要求:将/etc目录下的所有文件cp到/var/backups目录下 的以当天的日期命名的目录中例如(/var/backups/etc.20140809). 并且判断前 ...

最新文章

  1. python手机版下载官方-Python
  2. 关于HBITMAP,CBITMAP,BITMAP的转换以及图像显示的一点归纳
  3. 傅里叶变换及其应用 pdf_级数的欧拉变换及其应用
  4. 发生在“注解”@的那些事儿
  5. 遍历Map keySet和entrySet
  6. 孙宇java_[JAVA] 孙宇老师Struts2+Hibernate4+Maven+EasyUI+SpringMvc+Spring+Mybatis+Maven整合课程...
  7. 网络计算机热词,2017年的首个网络热词就这样被刷屏了!
  8. 多址接入技术TDMA CDMA FDMA Aloha等
  9. OAuth2.0 原理流程及其单点登录和权限控制
  10. linuxoracle静默安装应答文件修改_巧用组策略分发软件—让IT不再手忙脚乱地奔走在各个工位安装软件...
  11. nginx 代理静态资源报 403
  12. 谭浩强《C语言程序设计第五版》第二章学习笔记
  13. 1.7 Go语言和其它编程语言的对比
  14. 在matlab中,简单地利用RS485协议对伺服电机进行控制
  15. JavaScript逻辑训练题(二)
  16. Photoshop去除拍摄手写笔记背景
  17. ad引脚名字设置_AD软件管脚名称如何放置负信号?
  18. vue中使用require动态获取图片地址
  19. 前端技术:Vue+elementUI 饿了吗UI+CRUD,创建图书管理系统
  20. 自动发票校验 Auto Invoice Verification

热门文章

  1. SpringBoot 整合 Redis 哨兵机制_02
  2. PLSQL连接ORACLE
  3. 第3篇:Flowable-IDM详述
  4. Vue3---vue组件库
  5. android 4.4 屏幕方向,Android4.4屏幕旋转功能
  6. 智能机器人建房子后房价走势_深圳建二手房价引导制度,学习长沙意图明显,距离稳准狠差点意思...
  7. qt的项目中单个文件加载样式表
  8. Qt中UDP通信的简单示例
  9. jq之slidedown()
  10. BugkuCTF-PWN题pwn7-repeater详细讲解多解法