最近要给美国的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自动化全备份&增量备份脚本” 在IT环境中,版本控制系统如Subversion(SVN)是团队协作开发的重要工具,它用于管理代码版本,跟踪文件和目录的更改。然而,为了确保数据的安全和可靠...
下面将详细介绍如何配置和使用SVN自动备份脚本。 1. **SVN基础** SVN的核心功能是追踪文件和目录的更改,它允许用户回滚到过去的版本,查看历史记录,并进行分支和合并操作。这对于团队协作和项目管理至关重要。 ...
除了基本的svn admin dump备份命令外,还可以使用 Perl 脚本来实现自动备份。例如,可以创建一个weekly_backup.pl脚本,用于执行全量备份和压缩备份文件。该脚本可以将svn存储库备份到指定的备份目录中,并将备份...
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配置库全量备份脚本”,这是一个关键的实践操作,对于确保项目数据的安全性和可恢复性至关重要。下面将详细介绍如何使用脚本来执行SVN全量备份,以及涉及到的相关技术知识点。 首先,我们需要理解...
2. **svndump.bat**:此脚本可能是用来处理SVN转储文件的,例如进行过滤或者重定向到其他备份存储。它可以包含`svndumpfilter`命令,用于从全量转储文件中提取特定项目或路径的增量数据。 3. **projectlist.conf**...
post-commit.bat和deltaBackup.bat用的svnadmin dump命令,可以增量备份。 请注意,back.bat 、simplebackup.bat、post-commit.bat这三个文件放在文件版本库父目录(一般是X:\Repositories下面),deltaBackup.bat...
备份脚本可能包括以下步骤: 1. 检查版本库是否存在并可访问。 2. 使用`svnadmin dump`或`svnadmin hotcopy`创建备份。 3. 将备份文件传输到安全的位置,如远程服务器或云存储。 4. 记录备份日志,包括备份时间、...
`svn_dump_in.bat`很可能是SVN仓库的增量备份脚本。SVN提供了`svnadmin dump`命令,用于创建整个仓库或部分仓库的备份,通常称为dump文件。增量备份脚本会利用`svnadmin dump --incremental`选项,结合上一次的dump...
### SVN全量与增量备份脚本详解 #### 一、背景介绍 在软件开发过程中,版本控制系统如Subversion (SVN) 是不可或缺的工具之一。它不仅帮助团队管理代码版本,还提供了强大的备份机制来确保数据的安全性。本文将...
这是 Windows 环境下的 SVN 服务器自动备份脚本 (1)留意批处理 dump_all 和 hotcopy_all 中的三个路径,分别是安装目录、库目录、备份目录,这三个目录都支持路径中含有空格 (2)改写上面三个路径的时候,不要在...
### SVN增量备份脚本知识点详解 #### 一、SVN简介 Subversion(简称SVN)是一种开源的版本控制系统,用于管理源代码或文件目录树的变更。SVN通过记录每次提交的时间戳、作者和注释等元数据来追踪每个文件的历史变更...
本篇将详细解释如何在Linux下创建一个自动备份SVN仓库的shell脚本,并将其设置为计划任务。 首先,我们需要创建一个存放备份数据的路径。在示例中,路径是`/home/backup1/svn`。使用`mkdir -p`命令创建目录,`-p`...
通过创建SVN备份脚本,我们可以确保在开发过程中对代码库进行安全保护,避免数据丢失。以下将详细介绍如何实现SVN的增量备份和全量备份。 1. **全量备份** 全量备份是指获取SVN仓库中的所有文件和版本历史的完整...
本地备份是最基础的备份方式,它可以通过svn的`svnadmin dump`命令来完成。这个命令可以创建一个包含整个仓库数据的文本文件,用于后续的恢复。例如: ``` svnadmin dump D:\path\to\repository > repository....
1. 脚本概述:自动备份脚本通常会定期执行,例如每天或每周一次,以创建SVN仓库的完整副本。这可以通过Linux的cron job或者Windows的任务计划程序实现。脚本可能包含以下步骤: - 检查当前工作目录 - 导航到SVN...
这段描述提到的“一段进行SVN备份的脚本”就是为了解决这一需求,它允许用户通过Windows计划任务自动化执行备份过程,以防止意外数据丢失。 首先,我们需要理解SVN备份的基本原理。SVN仓库通常存储在服务器上,包含...
标题提到的“SVN数据库增量备份脚本”是为了定期或按需备份SVN服务器的数据,特别是针对数据库的变化部分。这种脚本通常基于shell、Python或其他编程语言编写,可以自动化执行备份任务,提高效率并减少人为错误。 ...
1. **配置自动备份脚本**:在开始之前,确保你已经安装了SVN的命令行工具。然后,创建一个批处理文件(例如`backup_svn.bat`),并在其中添加以下内容: ``` @echo off REM 设置SVN仓库路径 set REPO_PATH=C:\...
本文将深入探讨如何在Linux环境下利用shell脚本实现SVN双机热备份,确保服务高可用性和数据安全性。 首先,我们需要理解"双机热备份"的概念。双机热备份是指两台服务器同时运行,一台为主服务器,另一台为备用...