关于subversion主从备份方式的调整(全量、增量脚本)更新-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 6315115
  • 博文数量: 162
  • 博客积分: 3600
  • 博客等级: 中校
  • 技术积分: 10366
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-19 11:23
个人简介

专注系统运维、网络架构,研究技术凯发app官方网站的解决方案,记录我的思想轨迹、工作学习、生活和关注的领域

文章分类
文章存档

2014年(2)

2013年(16)

2012年(27)

2011年(117)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: 系统运维

2012-10-10 16:40:52

之前对subversion服务器作了迁移,关于svn的架构也走了调整,有单一的服务器改为主从备份的方式。在

全量备份:


说明:每周日备份,删除30天之前的备份文件。


  1. #!/bin/bash

  2. #function:svn全量备份

  3. #author: 志在千裏 2012-4-30

  4. svn_repos="/home/svn/mysvn" #版本库目录

  5. backup_dir="/home/svn/backup" #备份目录

  6. next_backup_file="week_incremental_backup".`date %y%m%d`

  7. log="$backup_dir/week_backed_up.log" #日志文件

  8. echo "********************"`date`"***************">> $log

  9. echo "svn all dump start!">> $log

  10. last_rev="`/usr/local/subversion/bin/svnlook youngest $svn_repos`" #最新版本

  11. if [ -f $next_backup_file ];then

  12.    echo "no new revisions to backup."
  13.    exit 0
  14. else

  15. /usr/local/subversion/bin/svnadmin dump --incremental --revision 0:$last_rev $svn_repos > $backup_dir/$next_backup_file #0版本,到最新版本的全量备份

  16. fi

  17. echo "last:$last_rev">> $log #记录版本库最新版本

  18. #删除30天之前的备份数据

  19. find $backup_dir -type f -mtime 30  -exec rm -rf {} \; | tee -a $log

  20. echo "********************"`date`"***************">>$log


那么如何还原呢?


  1. /usr/local/subversion/bin/svnadmin load /home/svn/mysvn 备份文件

增量备份:


较昨天记录最后版本,导出新增的版本,使用load 将每日增量备份导入备份服务器。


说明:nfs降远程文件系统挂载到主服务器,方便本地备份和传输


1、主服务器增量备份时间要比从服务器增量导入时间较前,保证增量备份已完成。

2、备份起点在上一次备份最新版本 1个后开始备份,删除前一天的增量备份文件。


备份:



  1. #!/bin/bash

  2. #function:svn增量备份

  3. #author: 志在千裏 2012-4-30

  4. svn_repos="/home/svn/mysvn"  #版本库

  5. backup_dir="/mnt/svnaddevreyday" #nfs挂载从服务器192.168.0.2的目录

  6. next_backup_file="add_incremental_backup".`date %y%m%d`  #增量备份文件

  7. log="$backup_dir/last_add_backed_up.log"   #日志文件

  8. repo="$backup_dir/svn.txt"   #记录版本库最新版本

  9. echo "********************"`date`"***************">> $log

  10. echo "svn add dump start!">> $log

  11. first_rev="`cat $repo`"  #备份起点

  12. last_rev="`/usr/local/subversion/bin/svnlook youngest $svn_repos`" #注服务器版本库最新版本

  13. slave_rev="`cat $backup_dir/slave.txt`"  #从服务器提供的校验版本

    if [ $first_rev  -ne $slave_rev ];then

  14.   echo "svn slaves is error, please check. " | mail -s "svn slave is error! first_rev !== slave_rev"   linlianpengit@sina.com    #主服务器备份起点版本和从数据最后版本不一致,则邮件报警

    else

  15. /usr/local/subversion/bin/svnadmin dump --incremental --revision $first_rev:$last_rev $svn_repos > $backup_dir/$next_backup_file  #上一次记录的版本,到最新版本的增量备份

  16. fi

  17. echo "fist:$first_rev">> $log

  18. echo "last:$last_rev">> $log #写入日志文件

  19. dump_rev=$(($last_rev 1)) #下一次备份起点,重点 1版本,否则报错

  20. echo "$dump_rev">$repo  #覆盖上一次备份起点

  21. #删除之前的增量备份文件

  22. rm -rf $backup_dir/add_incremental_backup.$(date %y%m%d --date='1 days ago')


从服务:

导入增量数据:


  1. #!/bin/bash

  2. #function:svn增量导入

  3. #author: 志在千裏 2012-4-30

  4. svn_repos="/home/svn/mysvn" #从服务器192.168.0.2版本库目录

  5. backup_dir="/home/svn/svnaddevreyday" #nfs远程共享主服务器192.168.0.1目录

  6. log="$backup_dir/last_load.log" #日志文件

  7. echo "********************"`date`"***************">> $log

  8. echo "svn load start!">> $log

  9. first_rev="`/usr/local/subversion/bin/svnlook youngest $svn_repos`"

  10. echo "first:$first_rev">> $log

  11. /usr/local/subversion/bin/svnadmin load $svn_repos &1 >>$log #导入增量备份文件

  12. last_rev="`/usr/local/subversion/bin/svnlook youngest $svn_repos`"

  13. echo "last:$last_rev">> $log #记录最新版本号

  14. repo_slave=$(($last_rev 1)) #作为检测主服务器和从服务器数据是否同步的判断数据

  15. echo "$repo_slave">/home/svn/svnaddevreyday/slave.txt

  16. echo "********************"`date`"***************">>$log

  17. #删除增量备份文件

  18. rm -rf /home/svn/svnaddevreyday/add_incremental_backup.*

  19. echo "svn load eed!">> $log

阅读(7820) | 评论(0) | 转发(4) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图