zoukankan      html  css  js  c++  java
  • 关于Subversion主从备份方式的调整(全量、增量脚本)更新

    本文引用于http://blog.chinaunix.net/uid-25266990-id-3369172.html

    之前对Subversion服务器作了迁移,关于SVN的架构也走了调整,有单一的服务器改为主从备份的方式。在“subversion迁移过程中增量备份脚本”中提到了增量备份的方式,但是运行一段时间,发现备份出错,提示导入的文件已存在,于是重新检查,修改了脚本。现在一直稳定运行着。

    今天重新回顾,发现了之前文章很多错误的地方,对文章作了更新,附上Subsection 全量和增量备份脚本。
        
    OS:RHEL 5.4
    主:192.168.0.1
    从:192.168.0.2
    Subversion版本:svn, version 1.6.6 (r40053)
    版本库:mysvn

    全量备份:

     

    说明:每周日备份,删除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 </home/svn/svnaddevreyday/add_incremental_backup.* 2>&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
  • 相关阅读:
    Move site collections to a new database
    SharePoint 2010 Site Workflow
    Customizing the Server Ribbon
    [转]深入浅出之正则表达式
    asp.net中MD5加密写法代码
    asp.net中过滤非法字符防止SQL注入
    jQuery中ajax的使用方法
    gridview中用NewSelectedIndex获取选中的ID值
    GridView中得到选中的某行的ID值
    用javascript伪装链接地址状态代码
  • 原文地址:https://www.cnblogs.com/fyc119/p/7529850.html
Copyright © 2011-2022 走看看