`
我改名了
  • 浏览: 88773 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

svn dump 全自动备份脚本

    博客分类:
  • svn
阅读更多
最近要给美国的SVN服务器做升级,由于这台服务器有一定年份了,在本公司也算是个三朝元老,保存了多少code啊!。为了保险起见,老板将迁移的工作郑重的交到我的手上。在欣欣然的同时也颤抖着。
不过还好我已经对其轻车熟路,在新的服务器上安装好apache和subversion软件后,开始着手备份与迁移了。
由于旧服务器版本太低,没有svnsync的功能,考虑再三,我选择使用了svnadmin dump去做备份。
可是有一个问题了,每个库的版本都有几万了,然后服务器上有十几个库,我可没耐心一个个输入svnadmin dump去备份它们,那会让我觉得长夜漫漫,难于睡眠!
管理员的最高境界就是花力气去懒惰,我很向往这个境界。所以,我花了些时间写了个shell,就让系统自己去干这些事情吧!

shell功能:
只需要大家修改源库所在的目录,和备份存放的目录就可以了。
第一次运行会全部备份,然后以后每次运行会增量备份。
所以,恢复的时候,先恢复全部备份,然后依次按照日期恢复增量备份即可。

#!/bin/sh

#########################################################
# this script is used for svn repository backup
# written: carywu
# date: 2008/11/21
#########################################################

###################################
# mail address for status updates
#  - This is used to email you a status report
###################################
MAILADDR=carywu@yahoo.cn

###################################
# backup directory,please change it
# - This is the path to the backup directory
###################################
BACKUPDIR=/svnroot/svnback

###################################
# svn repository directory, please change it.
# - This is the path to the directory you want to archive
###################################
SVNDIR=/svnroot/repository

###################################
# HOSTNAME and project list
#  - This is also used for reporting
###################################
ProjectLst=$BACKUPDIR/projectlist.txt

###################################
# svn backup log path and date
#  - This is used to log result
###################################
LogFile=$BACKUPDIR/svnback.log
DATE=`date +%Y%m%d-%T`
###################################
# svn command path
# - This is the path to the directory you want to archive
###################################
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin

# our actual rsyncing function
do_accounting()
{
        echo " " >> $LogFile
        echo " " >> $LogFile
        echo "###########################" >> $LogFile
        echo "$DATE" >> $LogFile
        echo "###########################" >> $LogFile
        cd $BackDir
}

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

分享到:
评论

相关推荐

    windows&linux svn自动化全备份&增量备份脚本

    【标题】:“Windows&Linux SVN自动化全备份&增量备份脚本” 在IT环境中,版本控制系统如Subversion(SVN)是团队协作开发的重要工具,它用于管理代码版本,跟踪文件和目录的更改。然而,为了确保数据的安全和可靠...

    SVN(windows平台)自动备份脚本

    下面将详细介绍如何配置和使用SVN自动备份脚本。 1. **SVN基础** SVN的核心功能是追踪文件和目录的更改,它允许用户回滚到过去的版本,查看历史记录,并进行分支和合并操作。这对于团队协作和项目管理至关重要。 ...

    svn自动备份脚本.zip

    svn自动增量备份 rem set logfile=svndump.log set SVN_HOME=C:\Progra~1\Subversion\bin set SVN_ADMIN="%SVN_HOME%\svnadmin.exe" set SVN_LOOK="%SVN_HOME%\svnlook.exe" set SVN_REPOROOT=e:\svn set RAR_CMD="C...

    svn admin dump备份

    除了基本的svn admin dump备份命令外,还可以使用 Perl 脚本来实现自动备份。例如,可以创建一个weekly_backup.pl脚本,用于执行全量备份和压缩备份文件。该脚本可以将svn存储库备份到指定的备份目录中,并将备份...

    svn配置库全量备份脚本

    本主题聚焦于“svn配置库全量备份脚本”,这是一个关键的实践操作,对于确保项目数据的安全性和可恢复性至关重要。下面将详细介绍如何使用脚本来执行SVN全量备份,以及涉及到的相关技术知识点。 首先,我们需要理解...

    SVN全量和增量备份脚本

    ### SVN全量与增量备份脚本详解 #### 一、背景介绍 在软件开发过程中,版本控制系统如Subversion (SVN) 是不可或缺的工具之一。它不仅帮助团队管理代码版本,还提供了强大的备份机制来确保数据的安全性。本文将...

    SVN增量备份-附带脚本

    2. **svndump.bat**:此脚本可能是用来处理SVN转储文件的,例如进行过滤或者重定向到其他备份存储。它可以包含`svndumpfilter`命令,用于从全量转储文件中提取特定项目或路径的增量数据。 3. **projectlist.conf**...

    SVN版本库备份操作脚本

    备份脚本可能包括以下步骤: 1. 检查版本库是否存在并可访问。 2. 使用`svnadmin dump`或`svnadmin hotcopy`创建备份。 3. 将备份文件传输到安全的位置,如远程服务器或云存储。 4. 记录备份日志,包括备份时间、...

    Windows下SVN备份脚本

    post-commit.bat和deltaBackup.bat用的svnadmin dump命令,可以增量备份。 请注意,back.bat 、simplebackup.bat、post-commit.bat这三个文件放在文件版本库父目录(一般是X:\Repositories下面),deltaBackup.bat...

    SVN增量备份脚本及MD5加密工具

    `svn_dump_in.bat`很可能是SVN仓库的增量备份脚本。SVN提供了`svnadmin dump`命令,用于创建整个仓库或部分仓库的备份,通常称为dump文件。增量备份脚本会利用`svnadmin dump --incremental`选项,结合上一次的dump...

    dump 和 hotcopy 自动备份 SVN 的批处理

    这是 Windows 环境下的 SVN 服务器自动备份脚本 (1)留意批处理 dump_all 和 hotcopy_all 中的三个路径,分别是安装目录、库目录、备份目录,这三个目录都支持路径中含有空格 (2)改写上面三个路径的时候,不要在...

    svn增量备份脚本

    ### SVN增量备份脚本知识点详解 #### 一、SVN简介 Subversion(简称SVN)是一种开源的版本控制系统,用于管理源代码或文件目录树的变更。SVN通过记录每次提交的时间戳、作者和注释等元数据来追踪每个文件的历史变更...

    SVN 备份脚本

    通过创建SVN备份脚本,我们可以确保在开发过程中对代码库进行安全保护,避免数据丢失。以下将详细介绍如何实现SVN的增量备份和全量备份。 1. **全量备份** 全量备份是指获取SVN仓库中的所有文件和版本历史的完整...

    svn自动备份与自动更新脚本附说明书一份

    1. 脚本概述:自动备份脚本通常会定期执行,例如每天或每周一次,以创建SVN仓库的完整副本。这可以通过Linux的cron job或者Windows的任务计划程序实现。脚本可能包含以下步骤: - 检查当前工作目录 - 导航到SVN...

    一段进行SVN备份的脚本

    这段描述提到的“一段进行SVN备份的脚本”就是为了解决这一需求,它允许用户通过Windows计划任务自动化执行备份过程,以防止意外数据丢失。 首先,我们需要理解SVN备份的基本原理。SVN仓库通常存储在服务器上,包含...

    SVN数据库增量备份脚本

    标题提到的“SVN数据库增量备份脚本”是为了定期或按需备份SVN服务器的数据,特别是针对数据库的变化部分。这种脚本通常基于shell、Python或其他编程语言编写,可以自动化执行备份任务,提高效率并减少人为错误。 ...

    SVN自动备份代码/文档功能

    1. **配置自动备份脚本**:在开始之前,确保你已经安装了SVN的命令行工具。然后,创建一个批处理文件(例如`backup_svn.bat`),并在其中添加以下内容: ``` @echo off REM 设置SVN仓库路径 set REPO_PATH=C:\...

    LINUX SVN双机热备份shell脚本 附配置文档

    本文将深入探讨如何在Linux环境下利用shell脚本实现SVN双机热备份,确保服务高可用性和数据安全性。 首先,我们需要理解"双机热备份"的概念。双机热备份是指两台服务器同时运行,一台为主服务器,另一台为备用...

    SVN自动提交脚本 For Windows

    SVN自动提交脚本,通过执行SVN Status命令来获取当前目录的Svn diff,通过替换SVN diff来将文件列表转换成Svn提交命令,最后对执行所有SVN命令来完成自动提交,可以用于SVN仓库的代码自动导入

    SVN自动更新提交脚本.zip(windows版本)

    本压缩包"SVN自动更新提交脚本.zip(windows版本)"提供了一个在Windows环境下自动执行SVN更新和提交操作的解决方案。 1. **SVN自动更新**: SVN自动更新功能允许用户定期从服务器获取最新的项目代码,确保本地...

Global site tag (gtag.js) - Google Analytics