SVN备份说明
svn备份实施方案
svn备份实施方案为了确保数据安全,备份成为了极为重要的措施之一。
在使用SVN进行版本控制的情况下,也同样需要制定有效的备份实施方案。
下面将介绍一种基于SVN备份的实施方案。
1. 定期备份首先,我们需要制定一个定期备份的计划。
可以选择每天、每周或每月备份一次。
这取决于数据的重要性和变动频率。
一般情况下,每天备份一次是比较合理的选择。
2. 备份目标我们需要清楚地定义备份的目标。
SVN备份分为两个层次:仓库级备份和服务器级备份。
- 仓库级备份:备份每个仓库的版本信息、分支和标签等- 服务器级备份:备份服务器上的所有仓库以及配置信息等对于仓库级备份,可以使用SVN自带的`svnadmin hotcopy`命令进行备份。
对于服务器级备份,可以直接备份服务器上的SVN主目录。
3. 存储介质选择选择合适的存储介质来存放备份数据。
常见的选择有硬盘、网络存储和云存储等。
根据实际情况选择合适的存储介质,并确保备份数据能够安全地存放在该介质上。
4. 备份策略备份策略包括完全备份和增量备份。
- 完全备份:每次备份都将所有数据都备份一遍,独立存放。
这种备份方式保证了每次备份的完整性,但是需要较大的存储空间和备份时间。
- 增量备份:每次备份只备份自上次备份以来的新增和修改的数据。
这种备份方式可以节省存储空间和备份时间,但是恢复数据时需要依赖完整备份和增量备份一起使用。
在实施备份方案时,可以根据备份的频率和数据的重要性选择合适的备份策略。
5. 自动化备份为了减少人为失误,提高备份的稳定性和可靠性,建议使用自动化备份工具进行备份。
可以使用脚本编写自动备份的任务,并定时执行。
这样可以确保备份的及时性和准确性。
6. 数据完整性验证备份完成后,需要对备份数据进行验证,确保备份的完整性和可用性。
可以通过还原备份文件,检查还原后的数据是否与源数据完全一致来进行验证。
7. 定期恢复测试定期进行备份的恢复测试非常重要。
恢复测试可以帮助我们检查备份的可用性和恢复的有效性。
svn备份方案
svn备份方案SVN(Subversion)是一种版本控制系统,广泛用于软件开发和团队协作中。
为了保护和恢复代码库,在使用SVN时备份是非常重要的。
本文将介绍一种可行的SVN备份方案,以确保代码的安全性和可靠性。
一、需求分析在制定备份方案之前,我们首先需要了解备份的需求。
根据实际情况,我们需要考虑以下几方面的需求:1. 数据的完整性:备份的数据应与原始数据完全一致,不可出现数据丢失或损坏情况。
2. 备份频率:备份的频率应根据代码更新的频率来确定,以确保备份数据的时效性。
3. 存储空间:备份数据的存储空间应合理控制,避免过多的空间占用。
4. 数据恢复:备份方案应包含数据的快速恢复方式,以便在需要时能够快速恢复代码。
二、备份方案基于以上需求,我们可以采用以下的SVN备份方案:1. 定期备份:根据代码更新的频率,制定定期备份策略,例如每天、每周或每月备份一次。
可以借助计划任务、Cron或其他定时调度工具来实现自动备份。
2. 完全备份:每次备份时,将整个SVN代码库文件夹进行完全备份,确保备份数据的完整性。
3. 增量备份:为了节省存储空间,可以在首次备份后,只备份新增或修改的文件和目录,而不是全量备份整个代码库。
这样可以减少备份数据量,加快备份速度。
4. 备份存储位置:将备份数据存储在不同于原始代码库的位置,以避免单点故障。
可以选择使用本地磁盘、网络共享存储或云存储等方式,确保备份数据的安全性。
5. 数据恢复测试:定期进行数据恢复测试,验证备份数据的可用性和恢复速度。
通过测试,及时修复备份方案中的问题,确保在数据丢失时能够快速恢复。
6. 备份日志记录:对备份过程进行日志记录,包括备份时间、备份内容等信息,以便后期跟踪备份记录和查询备份历史。
三、备份方案实施在实施备份方案时,需要按照以下步骤进行:1. 确定备份方案:根据实际需求,确定合适的备份方案,包括备份频率、备份策略和存储位置等。
2. 配置备份脚本:根据选定的备份方案,编写相应的备份脚本。
SVN仓库自动备份方法
SVN仓库自动备份方法SVN(Subversion)是一种版本控制系统,用于有效地管理文件和目录的版本。
为了确保数据的安全性和可靠性,将SVN仓库自动备份是至关重要的。
下面是一种SVN仓库自动备份的方法,包括以下步骤:1. 选择合适的备份存储介质:可以选择将备份存储在本地服务器的硬盘上,也可以将其存储在云存储服务(如Amazon S3、Google Cloud Storage)或其他远程服务器上。
选择恰当的备份存储介质是自动备份的第一步。
2. 创建备份脚本:使用Shell脚本、Python脚本或其他脚本语言编写一个备份脚本,用于执行SVN仓库的备份操作。
该脚本包含以下功能:a.检查SVN仓库的最新修改时间:使用SVN命令或其他相关命令,获取SVN仓库的最新修改时间。
这将用于判断是否需要进行备份操作。
b.备份SVN仓库:如果最新修改时间与上一次备份时间不一致,说明SVN仓库已经发生了变化,需要进行备份操作。
使用SVN命令将SVN仓库导出到指定的备份存储介质中,确保所有版本的文件和历史记录都可以恢复。
c.更新备份时间:备份完成后,更新备份时间,以便下一次备份可以正确判断是否需要备份。
3. 定时执行备份脚本:使用计划任务(Cron)或其他任务调度工具,设置定时任务,以便自动执行备份脚本。
可以选择每天、每周或每月等频率进行备份。
确保备份脚本能够准时执行,以保证SVN仓库的定期备份。
4.监控备份过程:在备份过程中,监控备份脚本的执行情况,确保备份操作成功完成。
可以在脚本中添加日志记录,以便对备份过程进行跟踪和分析。
如果备份失败或出现错误,及时采取相应的措施进行修复。
5.测试备份数据的恢复:定期测试备份数据的恢复功能,以确保备份数据的完整性和可用性。
可以选择随机选择几个版本进行恢复,并进行验证,确保所有文件和历史记录都可以正确恢复。
以上便是一种SVN仓库自动备份的方法。
通过创建备份脚本、定时执行备份脚本、定期监控备份过程和测试备份数据的恢复功能,可以确保SVN仓库的数据安全性和可靠性。
SVN迁移及备份的方法【转】
SVN迁移及备份的⽅法【转】备份策略==============svn备份⼀般采⽤三种⽅式:1)svnadmin dump2)svnadmin hotcopy3)svnsync.注意,svn备份不宜采⽤普通的⽂件拷贝⽅式(除⾮你备份的时候将库暂停),如copy命令、rsync命令。
笔者曾经⽤ rsync命令来做增量和全量备份,在季度备份检查审计中,发现备份出来的库⼤部分都不可⽤,因此最好是⽤svn本⾝提供的功能来进⾏备份。
优缺点分析==============第⼀种svnadmin dump是官⽅推荐的备份⽅式,优点是⽐较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。
缺点是:如果版本⽐较⼤,如版本数增长到数万、数⼗万,那么dump的过程将⾮常慢;备份耗时,恢复更耗时;不利于快速进⾏灾难恢复。
个⼈建议在版本数⽐较⼩的情况下使⽤这种备份⽅式。
第⼆种svnadmin hotcopy原设计⽬的估计不是⽤来备份的,只能进⾏全量拷贝,不能进⾏增量备份;优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚⾄不需要恢复,只需要进⾏简单配置即可切换到备份库上⼯作。
缺点是:⽐较耗费硬盘,需要有较⼤的硬盘⽀持(俺的备份机有1TB空间,呵呵)。
第三种svnsync实际上是制作2个镜像库,当⼀个坏了的时候,可以迅速切换到另⼀个。
不过,必须svn1.4版本以上才⽀持这个功能。
优点是:当制作成2个镜像库的时候起到双机实时备份的作⽤;缺点是:当作为2个镜像库使⽤时,没办法做到“想完全抛弃今天的修改恢复到昨晚的样⼦”;⽽当作为普通备份机制每⽇备份时,操作⼜较前2种⽅法⿇烦。
备份的命令==============全备份:使⽤svnadmin dump或svnadmin hotcopy或svnsync来做,hotcopy:svnadmin hotcopy path/to/repository path/to/backup –clean-logsdump:svnadmin dump 版本库路径及名称 –revision 导出的版本号> 导出的命名增量备份:使⽤svnadmin dump的–incremental选项来实现svnadmin dump 版本库路径及名称 –revision 上次导出的版本号:到本次要导出到的版本号 –incremental > 导出的命名⼀个技巧:如果你有⼀个较⼤的Subsersion版本库⽽你⼜想⽤最少的空间来将它备份下来,⽤这个命令(请将/repo替换成你的版本库路径)吧:svnadmin dump –deltas /repo |bzip2 |tee dump.bz2 | md5sum >dump.md5分步解释:最重要的⼀步是 -deltas,将消耗更多的CPU资源,但拥有更有效的差异存储办法。
Svn在Windows下实现自动全量增量备份和异地备份
SVN在Windows下实现自动全量增量备份和异地备份1SVN备份介绍1.1SVN备份内容SVN在Windows下的自动备份实现,包括:1)SVN目录的全备份(1周或1个月备份1次,由windows计划来调度执行);2)SVN增量备份(每日备份1次,由windows计划来调度执行);1.2SVN备份流程上述2类备份分别进行的流程如下:1)通过windows定时任务功能,调度进行备份、压缩、FTP上传功能的bat文件;2)将自动备份成按每日日期.dmp备份到SVN本机的其他磁盘空间中,分全备份和增量备份;3)启动ftp上传命令,将备份的rar包立即上传在异地服务器上。
异地服务器需提前架好ftp服务器并建立好相关上传目录,建议使用用、serverU或者简单ftp软件进行搭建。
4)整个上传过程,详细记录备份、压缩、FTP上传各步骤详细日志,随时可以查阅每次备份记录的详细情况。
1.3SVN还原功能可以进行还原所有版本库2SVN备份BAT设计1.1全备份BAT1)SVN的全备份,AllBackUp.bat:Begin@echo offsetlocal enabledelayedexpansionecho 正在准备备份所有版本库……echo.::设置SVN命令目录set SVN_CMD="E:\VisualSVN Server\bin"::设置所有版本库根目录set REPOS_ROOT=D:\Repositories::设置所有版本库备份根目录set REPOS_BACKUP_ROOT=F:\[SvnBackup]\全备份if not exist %REPOS_BACKUP_ROOT% mkdir %REPOS_BACKUP_ROOT%::设置所有版本库备份目录set BACKUP_DIRECTORY=%REPOS_BACKUP_ROOT%\%date:~0,10%.dmpset BACKUP_DIRECTORY=%BACKUP_DIRECTORY:/=-%rem if exist %BACKUP_DIRECTORY% goto Error2rem mkdir %BACKUP_DIRECTORY%if not exist %BACKUP_DIRECTORY% mkdir %BACKUP_DIRECTORY%::设置用户权限信息备份目录set REPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%\UserInfoif not exist %REPOS_USER_INFO_DIRECTORY% mkdir %REPOS_USER_INFO_DIRECTORY%::备份所有版本库::i->版本库、j->版本库最新版本号、k->上次完全备份时版本库的版本号echo ===================%date% %time:~0,8%:执行全部全量备份版本库.=================== >> %REPOS_BACKUP_ROOT%\BackUp.logecho 备份的版本库版本信息如下: >> %REPOS_BACKUP_ROOT%\BackUp.log::读取版本库根目录下每个文件夹,并判断其是否是一个版本库for /r %REPOS_ROOT% %%i in (.) do if exist %%i\conf\svnserve.conf ( ::将当前版本库的最新版本信息写入tmp文件%SVN_CMD%\svnlook youngest %%~fi > %%~ni_last_revision.tmp::取出当前版本库的最新版本信息,判断其是否大于0,是则进行处理for /f %%j in (%%~ni_last_revision.tmp) do if %%j gtr 0 (echo.echo 开始备份版本库%%~ni……::全量备份版本库%SVN_CMD%\svnadmin dump --deltas %%~fi > %BACKUP_DIRECTORY%\%%~ni-0-%%j.dmpecho %time:~0,8% %%~ni: 0-%%j >> %REPOS_BACKUP_ROOT%\BackUp.logecho 版本库%%~ni已经成功备份到%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp!)::删除临时文件del %%~ni_last_revision.tmp)echo.echo 开始备份用户权限信息……xcopy /y %REPOS_ROOT%\authz %REPOS_USER_INFO_DIRECTORY%xcopy /y %REPOS_ROOT%\authz-windows %REPOS_USER_INFO_DIRECTORY%xcopy /y %REPOS_ROOT%\htpasswd %REPOS_USER_INFO_DIRECTORY%echo ---------------------------------->> %REPOS_BACKUP_ROOT%\BackUp.log echo.echo 用户权限信息备份成功!echo %time:~0,8% 用户权限信息备份成功! >> %REPOS_BACKUP_ROOT%\BackUp.log echo.echo 全部版本库备份成功!echo %time:~0,8% 全部版本库备份成功! >> %REPOS_BACKUP_ROOT%\BackUp.logAllBackupByFtpgoto end:Error2echo.echo 备份目录已经存在,请确认后删除该目录,重新运行程序!goto End:Endecho.echo 程序执行结束!2)SVN的全备份进行FTP上传,AllBackupBy@echo offREM ======设置区Start================================setsetset .1.22setREM 指定从FTP下载下来的文件存放到本机哪个目录set 全备份REM 本地需要备份的根目录set SvnBackupRoot=F:\[SvnBackup]\全备份REM 本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp)set SvnBackupFolder=%SvnBackupRoot%\%date:~0,10%.dmpREM 需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)set rarToREM RAR执行文件的路径set rarExePath="C:\Program Files\WinRAR\"REM RAR执行文件的路径set bakupLog\BackUp.logREM FTP命令执行文件缓存set \Temp>"%" (echo,open % %echo,%echo,%echo cd "%"echo prompt offecho binecho put %rarToecho put %bakupLogecho bye)set Path=%Path%;%rarExePath%set log\REM ======设置区End ================================echo ===================%date% 执行异地版本库全量备份开始================= >> %logif not exist %SvnBackupFolder% goto Error1echo %time:~0,8% 备份压缩开始... >> %logWinRAR.exe a -ep1 -k -r -s -ibck %rarTo %SvnBackupFolder%echo %time:~0,8% 备份压缩成功,压缩的文件路径为:%rarTo >> %logecho %time:~0,8% 备份压缩继续上传FTP开始... >> %log-i -s:"%"echo %time:~0,8% 上传FTP成功,上传FTP目录为:% >> %logdel /q /s /f %rarToecho. >> %loggoto end:Error1echo.echo %time:~0,8% 提示: 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! >> %logecho %time:~0,8% 备份失败! >> %logecho. >> %logecho 提示:echo 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成!:Endecho.echo 程序执行结束!1.2增量备份BAT1)SVN数据库的增量备份,IncreBackUp.batif not exist %REPOS_BACKUP_ROOT% mkdir %REPOS_BACKUP_ROOT%::获取LastRevisions目录set REPOS_LAST_REVERSION_DIRECTORY=%REPOS_BACKUP_ROOT%\LastRevisionsrem if not exist %REPOS_LAST_REVERSION_DIRECTORY% goto Error1if not exist %REPOS_LAST_REVERSION_DIRECTORY%mkdir %REPOS_LAST_REVERSION_DIRECTORY%::设置所有版本库备份目录set BACKUP_DIRECTORY=%REPOS_BACKUP_ROOT%\%date:~0,10%.dmpset BACKUP_DIRECTORY=%BACKUP_DIRECTORY:/=-%rem if exist %BACKUP_DIRECTORY% goto Error2rem mkdir %BACKUP_DIRECTORY%if not exist %BACKUP_DIRECTORY% mkdir %BACKUP_DIRECTORY%::设置用户权限信息备份目录set REPOS_USER_INFO_DIRECTORY=%BACKUP_DIRECTORY%\UserInfoif not exist %REPOS_USER_INFO_DIRECTORY% mkdir %REPOS_USER_INFO_DIRECTORY%::设置LastRevisions备份目录set REPOS_LAST_REVERSION_BACKUP_DIRECTORY=%BACKUP_DIRECTORY%\LastRevisions if not exist %REPOS_LAST_REVERSION_BACKUP_DIRECTORY%mkdir %REPOS_LAST_REVERSION_BACKUP_DIRECTORY%::备份所有版本库::i->版本库、j->版本库最新版本号、k->上次完全备份时版本库的版本号echo ===================%date% %time:~0,8%:执行全部版本库备份.=================== >> %REPOS_BACKUP_ROOT%\BackUp.logecho 备份的版本库版本信息如下: >> %REPOS_BACKUP_ROOT%\BackUp.log::读取版本库根目录下每个文件夹,并判断其是否是一个版本库for /r %REPOS_ROOT% %%i in (.) do if exist %%i\conf\svnserve.conf (::将当前版本库的最新版本信息写入tmp文件%SVN_CMD%\svnlook youngest %%~fi > %%~ni_last_revision.tmp::取出当前版本库的最新版本信息,判断其是否大于0,是则进行处理for /f %%j in (%%~ni_last_revision.tmp) do if %%j gtr 0 (::判断以前是否存在该版本库的版本信息,存在说明以前备份过,需要基于其进行备份;否则对该版本库进行全新备份if exist %REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txt (::读取该版本库上次备份时保存的版本信息,如果小于当前版本信息则进行处理for /f %%k in (%REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txt) do if %%k lss %%j (echo.echo 开始备份版本库%%~ni……::取得该版本库本次备份的起始版本号set version=%%kset /a version=!version!+1::增量备份版本库%SVN_CMD%\svnadmin dump --deltas %%~fi --revision !version!:head --incremental > %BACKUP_DIRECTORY%\%%~ni-!version!-%%j.dmpecho %%~ni: !version!-%%j >> %REPOS_BACKUP_ROOT%\BackUp.logecho 版本库%%~ni已经成功备份到%BACKUP_DIRECTORY%\%%~ni-!version!-%%j.dmp! )) else (echo.echo 开始备份版本库%%~ni……::全量备份版本库%SVN_CMD%\svnadmin dump --deltas %%~fi > %BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp echo %%~ni: 0-%%j >> %REPOS_BACKUP_ROOT%\BackUp.logecho 版本库%%~ni已经成功备份到%BACKUP_DIRECTORY%\%%~ni-0-%%j.dmp!)::将本次版本库备份时的最新版本信息写入文件保存echo %%j> %REPOS_LAST_REVERSION_DIRECTORY%\%%~ni_last_revision.txtecho %%j> %REPOS_LAST_REVERSION_BACKUP_DIRECTORY%\%%~ni_last_revision.txt )::删除临时文件del %%~ni_last_revision.tmp)echo.echo 开始备份用户权限信息……xcopy /y %REPOS_ROOT%\authz %REPOS_USER_INFO_DIRECTORY%xcopy /y %REPOS_ROOT%\authz-windows %REPOS_USER_INFO_DIRECTORY%xcopy /y %REPOS_ROOT%\htpasswd %REPOS_USER_INFO_DIRECTORY%echo.echo 用户权限信息备份成功!echo.echo 全部版本库备份成功!IncreBackupByFtpgoto end:Error1echo.echo 提示:echo 上次备份保存的%REPOS_LAST_REVERSION_DIRECTORY%文件夹不存在,请确认后从上次备份中拷贝LastReversions到%REPOS_BACKUP_ROOT%目录,重新运行程序; echo 或者,不基于上次备份重新执行备份!echo 重新备份?(Y/N)set /p input=if %input%==Y (mkdir %REPOS_LAST_REVERSION_DIRECTORY%goto Begin) else (goto End):Error2echo.echo 备份目录已经存在,请确认后删除该目录,重新运行程序!goto End:Endecho.echo 程序执行结束!2)SVN数据的增量备份的FTP上传,IncreBackupBy@echo offREM ======设置区Start================================setsetset .1.22setREM 指定从FTP下载下来的文件存放到本机哪个目录set 增量备份REM 本地需要备份的根目录set SvnBackupRoot=F:\[SvnBackup]\增量备份REM 本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp)set SvnBackupFolder=%SvnBackupRoot%\%date:~0,10%.dmpREM 需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)set rarToREM RAR执行文件的路径set rarExePath="C:\Program Files\WinRAR\"REM RAR执行文件的路径set bakupLog\BackUp.logREM FTP命令执行文件缓存set \Temp>"%" (echo,open % %echo,%echo,%echo cd "%"echo prompt offecho binecho put %rarToecho put %bakupLogecho bye)set Path=%Path%;%rarExePath%set log\REM ======设置区End ================================echo ===================%date% 执行异地版本库增量备份开始.=================== >> %logif not exist %SvnBackupFolder% goto Error1echo %time:~0,8% 备份压缩开始... >> %logWinRAR.exe a -ep1 -k -r -s -ibck %rarTo %SvnBackupFolder%echo %time:~0,8% 备份压缩成功,压缩的文件路径为:%rarTo >> %logecho %time:~0,8% 备份压缩继续上传FTP开始... >> %log-i -s:"%"echo %time:~0,8% 上传FTP成功,上传FTP目录为:% >> %logdel /q /s /f %rarToecho. >> %loggoto end:Error1echo.echo %time:~0,8% 提示: 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! >> %logecho %time:~0,8% 备份失败! >> %logecho. >> %logecho 提示:echo 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成!:Endecho.3SVN还原BAT设计SVN的还原LoadBackUp.bat@echo offecho 正在准备还原所有版本库……echo.::设置SVN命令目录set SVN_CMD="E:\VisualSVN Server\bin"::设置所有版本库根目录set REPOS_ROOT=D:\Repositories::设置所有版本库备份根目录set REPOS_BACKUP_ROOT=F:\[SvnBackup]\增量备份if not exist %REPOS_BACKUP_ROOT% goto Error::还原所有版本库echo ===================%date% %time:~0,8%:执行版本库执行还原操作=================== >> %REPOS_BACKUP_ROOT%\SvnLoad.logecho 还原的版本库版本信息如下: >> %REPOS_BACKUP_ROOT%\SvnLoad.log::将所有保存版本库备份的文件夹名写入tmpdir /b %REPOS_BACKUP_ROOT%\*.dmp > folderName.tmp::依次操作tmp文件中包含的文件夹for /f %%h in (folderName.tmp) do (::将所有版本库文件名写入tmpdir /b /a-d %REPOS_BACKUP_ROOT%\%%h\*.dmp >::依次操作tmp文件中包含的备份文件for /f %%i in () do (::处理备份文件名,以取得版本库名和相应的版本号for /f "tokens=1,2* delims=-" %%j in ("%%~ni") do (echo.echo 开始还原版本库%REPOS_BACKUP_ROOT%\%%h\%%j-%%k-%%l……::版本库根目录不存在和版本库名相同名字的文件夹则创建一个if not exist %REPOS_ROOT%\%%j (mkdir %REPOS_ROOT%\%%j)::版本库根目录中该文件夹不是版本库,则创建一个if not exist %REPOS_ROOT%\%%j\conf\svnserve.conf (%SVN_CMD%\svnadmin create %REPOS_ROOT%\%%j)::还原备份%SVN_CMD%\svnadmin load %REPOS_ROOT%\%%j < %REPOS_BACKUP_ROOT%\%%h\%%i echo %%j: %%k-%%l >> %REPOS_BACKUP_ROOT%\SvnLoad.logecho 版本库%REPOS_BACKUP_ROOT%\%%h\%%j-%%k-%%l还原成功!)))::删除临时文件deldel folderName.tmpecho.echo 全部版本库还原成功!goto end:Errorecho.echo 版本库备份目录%REPOS_BACKUP_ROOT%不存在,请确认后重新运行程序! goto End:End。
Svn版本管理备份策略
解决办法
SVN命令错误:检查 SVN命令是否正确, 可以查阅SVN手册或 在线文档。
权限问题:检查备份 文件的读写权限,确 保有足够的权限进行 备份。
文件锁定:在备份过 程中,确保没有其他 进程锁定备份文件。
备份文件损坏
解决办法
磁盘故障:定期对磁盘进行检查 和维护,确保磁盘的稳定性和可 靠性。
原因:文件写入错误、磁盘故障 、病毒攻击等。
03
SVN版本备份常见问题及解决办法
备份中断
解决办法
SVN服务器故障:定期备份SVN 服务器,并对备份文件进行完整 性检查。
原因:网络中断、SVN服务器故 障、磁盘空间不足等。
网络故障:检查网络连接,确保 网络畅通。
磁盘空间不足:定期清理磁盘空 间,确保有足够的空间进行备份 。
备份错误
原因:SVN命令错误 、权限问题、文件锁 定等。
SVN与常用的版本控制系统(如CVS)相比,具有更好的性 能和更丰富的功能,如版本控制、冲突解决、历史记录查询 等。
SVN服务器架设
1 2
选择SVN服务器
可以选择多种SVN服务器,如Apache、 VisualSVN Server等。
安装SVN服务器
根据所选服务器类型进行安装,并进行必要的 配置。
文件写入错误:检查备份文件的 完整性,如有需要可以重新备份 。
病毒攻击:安装杀毒软件,定期 进行全盘扫描,防止病毒攻击备 份文件。
04
SVN版本备份实际操作
Windows系统SVN备份
安装VisualSVN Server
在Windows服务器上安装VisualSVN Server,以便在Windows平台上进行版本控制和备份。
周备份
svnsync同步备份
源库:test
1、在要备份的机器上建立版本库
/usr/local/svn/bin/svnadmin create /svn/backup
2、进入备份机器版本库backup下的hooks目录。
cd /svn/backup/hooks/
3、创建pre-revprop-change文件
/usr/local/svn/bin/svnsync sync file:///svn/backup
8、修改权限文件,保证管理员能够访问目标库,检查备份情况
9、设置定时同步
1)在/svn下面创建脚本svnsync.sh
#!/bin/bash
/usr/local/svn/bin/svnsync sync file:///svn/backup --username XXX --password XXX
50 7 * * * root run-parts /etc/cron.daily ——每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件[ 注:run-parts参数表示,执行后面目录中的所有可执行文件。 ]
2)chmod a+x /svn/svnsync.sh
3)在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start
4)crontab -e,增加
1 * * * * /svn/svnsync.sh > /svn/svnsync.out
30 5 8 6 * ls ——指定每年的6月8日5:30执行ls命令
30 6 * * 0 ls ——指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,以此类推,也可以用英文来表示,sun表示星期天,mon表示星期一等。]
VisualSVN Server备份操作说明
VisualSVN Server 2.5.10 备份操作说明目录修订记录错误!未定义书签。
1.同步备所需要的命令 (3)1.1. Svnsyn (3)1.2. 目标 (3)1.3. 过程 (3)1.4. 初始化 (4)1.5. 同步 (4)2.具体操作操作流程概括 (5)3.遇到的问题与解决方法 .................................................................. 错误!未定义书签。
4.Subversion同步工具svnsync出错 ............................................. 错误!未定义书签。
5.使用svnsync备份很简单,步骤如下 .......................................... 错误!未定义书签。
6.注意事项 (5)7.关于svnsync备份时出现的问题解析 .......................................... 错误!未定义书签。
7.1. 问题一............................................... 错误!未定义书签。
7.1.1. 问题描述............................................. 错误!未定义书签。
7.1.2. 解决方案............................................. 错误!未定义书签。
7.2. 问题二............................................... 错误!未定义书签。
7.2.1. 问题描述............................................. 错误!未定义书签。
7.2.2. 解决方案............................................. 错误!未定义书签。
svn备份实施方案
svn备份实施方案SVN备份实施方案一、背景介绍随着信息技术的不断发展,数据备份已成为企业信息化管理中的重要环节。
在软件开发过程中,版本控制是非常重要的一环,而SVN (Subversion)作为一款流行的版本控制系统,被广泛应用于软件开发团队中。
为了保障软件开发过程中的数据安全,制定一套SVN 备份实施方案显得尤为重要。
二、备份目标1. 保障软件开发过程中的数据安全,防止数据丢失;2. 提高数据恢复的效率,缩短系统故障期间;3. 保证备份数据的完整性和一致性;4. 降低备份和恢复过程对系统性能的影响。
三、备份策略1. 定期全量备份:每周对SVN服务器进行一次全量备份,保证所有数据都能够被备份。
2. 增量备份:每日对SVN服务器进行增量备份,仅备份当天有变动的数据,降低备份数据量和备份时间。
3. 数据冗余备份:将备份数据存储在不同的地点,防止因某一地点发生灾难导致备份数据丢失。
四、备份流程1. 定期全量备份流程:a. 停止SVN服务;b. 备份SVN仓库数据至备份服务器;c. 启动SVN服务。
2. 增量备份流程:a. 判断当天是否有SVN数据变动;b. 若有变动,备份变动的数据至备份服务器;c. 若无变动,不进行备份操作。
3. 数据冗余备份流程:a. 将备份数据同步至不同的备份服务器;b. 定期检查备份数据的完整性和一致性。
五、备份存储1. 选择可靠的备份存储设备,如磁带库、硬盘阵列等;2. 确保备份存储设备的稳定性和可靠性;3. 定期检查备份存储设备的健康状态,及时替换损坏的设备。
六、备份恢复1. 定期进行备份恢复测试,验证备份数据的可用性;2. 确保备份数据能够在系统故障时快速恢复;3. 制定详细的数据恢复流程和操作手册,以备不时之需。
七、备份监控1. 配置备份监控系统,实时监控备份任务的执行情况;2. 定期检查备份日志,及时发现备份异常并进行处理;3. 设定报警机制,一旦发现备份异常立即通知相关人员处理。
SVN备份研究
1.全量备份的实现步骤最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上就可以了.但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会造成备份的结果不够准确,失去备份的作用,为此使用提供的“svnadmin hotcopy”的命令,可以防止这种问题。
例如:有如下的SVN版本库F:/SVN_ROOT/00-Organization├─conf├─db│├─revprops││└─0│├─revs││└─0│├─transactions│└─txn-protorevs├─hooks└─locks现在将00-Organization备份到G:\SVN_FULL_BAK目录下。
1.1实现脚本全量备份,包含两个文件hotcopy.bat和最终执行文件fullBackup.bat。
1.1.1hotcopy.bat脚本:@echo 正在备份版本库%1……@%SVN_HOME%\svnadmin hotcopy %1 %BACKUP_DIRECTORY%\%2@echo 版本库%1成功备份到了%2!1.1.2fullBackup.bat脚本:rem Subversion的安装目录set SVN_HOME="D:\Program Files\svn-win32-1.6.6\bin"rem 所有版本库的父目录set SVN_ROOT=F:\SVN_ROOTrem 备份的目录set BACKUP_SVN_ROOT=G:\SVN_FULL_BAKset BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%if exist %BACKUP_DIRECTORY% goto checkBackecho 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/fullbackup.logmkdir %BACKUP_DIRECTORY%rem 验证目录是否为版本库,如果是则取出名称备份for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" hotcopy.bat "%%~fI" %%~nIgoto end:checkBackecho 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
visualsvn热备份(sync同步)
利用svnsync同步SVN版本库配置环境:目标:将之前主库上的SVN数据迁移到VisualSVN上,然后在实现版本库的远程自动备份,版本库备份到另一台机器上。
VisualSVN服务器端安装双击VisualSVN-Server-2.5.12.msi,然后点击“Next”下一步;点击“Next”下一步选择第一个,点击“Next”下一步Location是VisualSVN Server安装路径,Repositories是版本库路径,port指定端口,Use secure connection:是否用s安全连接;如果不改,点击“Next”下一步;点击“install”继续安装点击“Finish”安装完成VisualSVN主备配置:主库服务器:(IP:192.168.22.66)1.首先将之前SVN版本库目录下的文件COPY到VisualSVN版本库C:\Repositories\目录下,刷新VisualSVN就可以看到;2.添加用户,设置权限:备份服务器:(IP: 192.168.22.62)3.创建一个新的空库4.创建用户,设置权限,与主库一致:5.编辑pre-revprop-change文件,增加容:echo "Changing revision properties other than svn:log is prohibited" >&2 exit 0这个文件存放路径:C:\Repositories\back_svn\hooks6.用命令进行初始化:file:///C:\Pepositories\back_svn →为备份库的所在的物理路径(视实际库路径而定)192.168.22.66:88/svn/svn_new →为主库的ChekOut路径(视实际端口号而定)如果不输入--username svn_back --password 111111,命令执行时会提示输入用户名密码,这时将之前创建的用户svn_back与密码输入即可;7.开始同步数据:svnsync sync file:///C:\Repositories\back_svn8.同步成功后,在回到主库编辑post-commit文件,实现事实提交同步;编辑容:svnsync sync --non-interactive 192.168.22.62:80/svn/back_svn --username svn_back --password 111111其中192.168.22.62:80/svn/back_svn为备份库CheckOut路径配置结束,以后每次commit时,数据都会备份到备份库中。
SVN版本库备份和恢复
SVN版本库备份和恢复1.版本库备份1.1.svnadmin dump⽅式备份此⽅法借助的是Subversion官⽹推荐的svnadmin dump备份⽅式,它的优点是⽐较灵活,既可以进⾏全量备份⼜可以进⾏增量备份,并提供了版本恢复机制。
缺点是如果版本过⼤,如版本数增加到数万、数⼗万条时,则dump的过程很慢,备份时耗时,恢复备份库时更耗时,不利于快速进⾏灾难恢复,此⽅法建议在版本库较⼩的情况下采⽤。
a) 全量备份:命令格式为:svnadmin dump 版本库路径及名称 -r 导出的版本号 > 备份版本库存放路径及名称(-r是revision的缩写,也可以--revision代替)或 svnadmin dump 版本库路径及名称> 备份版本库存放路径及名称(不添加版本号时默认备份最⾼版本号)例如:1. 对project版本库的前10个版本进⾏备份,将备份⽂件保存到H盘的svn_back/dump⽂件夹中,进⼊cmd命令⾏,输⼊以下命令:svnadmin dump E:\Repository\project -r 10 > H:\svn_backup\dump\project.dump点击回车后,如图所⽰,已经将project版本库中的前10个版本进⾏备份。
2. 对project版本库的所有版本进⾏备份,将备份⽂件保存到H盘的svn_backup⽂件夹中,进⼊cmd命令⾏,输⼊以下命令:svnadmin dump F:\Repository\project>H:\svn_backup\project.dump点击回车后,如下图所⽰,已经将project版本库中的12个版本全部备份。
b)增量备份:增量备份主要使⽤svnadmin dump的 --incremental选项来实现,在对版本进⾏管理时,采⽤增量备份的⽅法,只需要对版本库从上次备份后的版本号开始进⾏备份即可,节省了对版本库备份时的时间及存放版本的硬盘资源。
Linux部署SVN详解(含备份与还原)
Linux部署SVN详解1安装操作系统安装系统采用CentOS-6.2/Database Server2安装配置apache与SVN1)数据包安装顺序:(安装包在CentOS-6.2盘的Packages目录下均可找到)a)apr-1.3.9-3.el6_1.2.i686.rpmb)apr-util-1.3.9-3.el6_0.1.i686.rpmc)httpd-2.2.15-15.el6.centos.i686.rpm依赖文件:httpd-tools-2.2.15-15.el6.centos.i686.rpm与apr-util-ldap-1.3.9-3.el6_0.1.i686.rpmd)sqlite-3.6.20-1.el6.i686.rpme)subversion-1.6.11-2.el6_1.4.i686.rpm依赖文件:neon-0.29.3-1.2.el6.i686.rpmneon依赖文件:pakchois-0.4-3.2.el6.i686.rpm与libproxy-0.3.0-2.el6.i686.rpm安装libproxy命令:三个包同时安装rpm -ivh libproxy-0.3.0-2.el6.i686.rpm libproxy-bin-0.3.0-2.el6.i686.rpm libproxy-python-0.3.0-2.el6.i686.rpmf)mod_dav_svn-1.6.11-2.el6_1.4.i686.rpm安装后将生成文件:/etc/httpd/conf.d/subversion.conf2)修改apache(即httpd)配置文件#vi /etc/httpd/conf/httpd.conf执行上述命令后,对文件进行以下修改:ServerName localhost:80localhost表示自己的IP地址(找到上面一行并做类似修改后保存退出)#service httpd start#chkconfig httpd on文件修改完成后,启动http服务并使用chkconfig命令设置开机自启动。
VisualSVNserver备份与恢复
VisualSVNserver备份与恢复VisualSVN server 备份与恢复⽅法⼀、直接把repository⽬录下的对应的项⽬复制到另外的地⽅就好。
例如上图中的所有项⽬,把所有项⽬⽬录复制到另外的地⽅。
需要恢复的时候,就右击Repositories,选择import,然后找到这个所有项⽬。
注意,不是整个Repository⽬录复制啊~~~⽅法⼆、搭建完新的Visual SVN服务器后,把原有客户端最新的⼀份上传提交到Visual SVN服务器端即可。
(仅适⽤于没有服务器端备份)⽅法三、最有效,最简单1、把服务器端的repository⽬录整个拷⾛,备份到新服务器。
2、在新的服务器搭建新的Visual SVN后,在repositories root位置指向备份⽬录,然后重启服务即可。
注:⽤户认证重要的项⽬信息⽂件是repositories root⽬录下的authz和authz-windows 、htpasswd三个⽂件。
authz和authz-windows是⽬录访问权限控制⽂件,htpasswd是VisualSVN Server Manager⽤户和密码记录⽂件。
由于使⽤了域认证,所以认证信息都储存在authz-windows⽂件。
当然还有其它⽅法,使⽤svnadmin dump或svnadmin hotcopy或svnsync 可参考/doc/ebbf9be5f121dd36a32d82f0.html /1638252/847510 /doc/ebbf9be5f121dd36a32d82f0.html /?q=node/139由于第三种⽅法已满⾜要求,故不使⽤其它⽅法。
VisualSVN-Server-2.1.1备份手册V1.1
VisualSVN-Server-2.1.1备份手册版本修订历史记录:目录1.同步备份所需要的命令 (4)1.1.svnsync init (4)1.2.svnsync sync (4)2.具体同步过程 (4)2.1.目标 (4)2.2.过程 (4)3.可能遇到的问题与解决方法 (7)1.同步备份所需要的命令1.1.svnsync init功能:初始化,建立目标库和源库之间的同步关系命令格式:svnsync init 目标库URL 源库URL1.2.svnsync sync功能:同步命令格式:svnsync sync 目标库URL2.具体同步过程2.1.目标实现目标是版本库的远程备份,将版本库svnproject备份到另一台机器上。
假设我们要同步的源版本库地址为http://192.168.1.210/svn/svnproject,位于机器A,具体路径我们不必理会,因为我们使用http协议。
目标库在机器B,地址为file:///F:/Repositories/svnproject2.2.过程1)在机器B使用VisualSVN新建资源库svnproject,假设其资源库物理位置为F:\svn\svnproject。
2)在机器B的F:\svn\svnproject\hooks目录下创建pre-revprop-change.bat文件,如下图所示:3)在机器B复制hooks目录下的pre-revprop-change.tmpl文件的所有内容到pre-revprop-change.bat文件,复制内容的末尾字段如下:原脚本的意思是如果修改的是svn:log属性,将允许修改,返回0;否则,不允许,返回1,我们要将它改为允许修改所有的属性,在脚本中直接返回0,将脚本最后一行修改如下:exit 0。
4)在机器B上打开cmd,输入命令:svnsync init file:///F:/Repositories/svnproject http://192.168.1.210:8081/svn/svnproject会提示输入用户名和密码,这里提供的用户名和密码是可以完全读取计算机A的用户名和密码。
SVN备份原代码操作步骤参考【精选】
SVN备份原代码操作步骤参考1.删除先前备份过的缺陷代码:操作如下:右击鼠标(任意位置),选择Repo-browser:找到备份地址(http://192.168.2.97/storage/IPTV_HeBei/开发库/Java/备份/Code/IPTV_HeBei_Java_V1.02_20110509)这是本次地址,以后会有更新:直接删除前两天的备份:2.打标签3.注:∙打标签的目录必须以发布版本的标签来标示。
∙每次出版本后必须立即备份原码,如果版本原码有更新,应立即删除原先的备份,再新备份。
多屏MSAS_Java_V1.01_20110901源码备份以下是附加文档,不需要的朋友下载后删除,谢谢顶岗实习总结专题13篇第一篇:顶岗实习总结为了进一步巩固理论知识,将理论与实践有机地结合起来,按照学校的计划要求,本人进行了为期个月的顶岗实习。
这个月里的时间里,经过我个人的实践和努力学习,在同事们的指导和帮助下,对村的概况和村委会有了一定的了解,对村村委会的日常工作及内部制度有了初步的认识,同时,在与其他工作人员交谈过程中学到了许多难能可贵经验和知识。
通过这次实践,使我对村委会实务有所了解,也为我今后的顺利工作打下了良好的基础。
一、实习工作情况村是一个(此处可添加一些你实习的那个村和村委会的介绍)我到村村委会后,先了解了村的发展史以及村委会各个机构的设置情况,村委会的规模、人员数量等,做一些力所能及的工作,帮忙清理卫生,做一些后勤工作;再了解村的文化历史,认识了一些同事,村委会给我安排了一个特定的指导人;然后在村委会学习了解其他人员工作情况,实习期间我努力将自己在学校所学的理论知识向实践方面转化,尽量做到理论与实践相结合。
在实习期间我遵守了工作纪律,不迟到、不早退,认真完成领导交办的工作。
我在村委会主要是负责管理日常信件的工作,这个工作看似轻松,却是责任重大,来不得办点马虎。
一封信件没有及时收发,很有可能造成工作的失误、严重的甚至会造成巨大的经济损失。
svn备份命令
svn备份命令
Svn备份命令
Svn全库备份 本地方式
导出:
Svnadmin dump 版本的路径及名称 –-revision 导出的版本号>导出的路径及民称 例 :svnadmin dump f:\\SVN\\itss –-revision 9 >f:\\***\\itss-9
导入:
Svnadmin load 要恢复的版本路径及名Байду номын сангаас <导出的路径及名称
例:svnadmin load f:\\SVN\\item < f:\\***\\itss-9
Svn增量备份 本地方式
Svnadmin dump 版本库路径及名称 –-revision 上次导出的版本号:到本次要导出到的版本号 –-incremental >导出文件的路径及名称
SVN备份还原操作手册
SVN备份还原操作手册一、命令备份1.svnadmin dump全量备份进入SVN服务端安装目录下运行svnadmin dump命令(C:/Repositories/QA为SVN库中项目目录,full.svn.bak为备份文件名)2.svnadmin dump增量备份(以增量把版本库8转存到svn.bak.1,-r [--revision] :指定版本;--incremental :以增量方式进行转存)3.svnadmin dump还原(先创建一个新的版本库,再还原完全备份,有增量备份的再还原增量备份)(进入SVN服务端安装目录下调用命令创建test测试库)4.运行svnadmin load还原命令(增量还原同全量还原)二、脚本备份(针对项目库备份)1.svnadmin dump全量备份脚本(在SVN库中添加全量备份脚本backup.bat,需要安装对应的压缩工具)2.脚本内容rem Subversion的安装目录set SVN_HOME="C:\ProgramFiles\VisualSVNServer"rem 所有版本库的父目录set SVN_ROOT=C:\Repositoriesrem 备份的目录set BACKUP_SVN_ROOT=C:\bakrem 创建存放版本库的临时目录setBACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,4%%date:~5,2%%date:~8,2% if exist %BACKUP_DIRECTORY% goto checkBackecho %date:~0,4%%date:~5,2%%date:~8,2%:建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.logrem SVN 版本库自动备份时需要rem创建备份目录md %BACKUP_DIRECTORY%cd C:\Program Files\VisualSVN Server\bin\svnadmin.exedump C:\Repositories\QA > %BACKUP_DIRECTORY%\FINANCE%date:~0,10%rem 验证目录是否为版本库,如果是则取出名称备份rem for /r%SVN_ROOT%%%I in(.)do@ifexist"%%I\conf\svnserve.conf"call%SVN_ROOT%\simpleBackup.bat"%%~fI"%%~nI echo 开始压缩版本库,请不要中止....rem %SVN_ROOT%\7z.exea-tzip%BACKUP_SVN_ROOT%\%date:~0,4%%date:~5,2%%date:~8 ,2%.zip%BACKUP_DIRECTORY%\*-r>nulecho 版本库压缩完成!rem 清除临时创建备份目录rem rd/s/q%BACKUP_DIRECTORY%goto end:checkBackecho 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
GIT及SVN数据自动备份和恢复说明
GIT及SVN数据自动备份和恢复说明大纲1 、概述 (2)2 、Gitlab数据自动备份 (3)3 、SVN数据自动备份 (6)4 、数据手工恢复 (8)1、概述服务器信息具体如下:Gitlab备份策略:备份频度:每天进行一次全量备份,保存最近7天的备份文件;备份地点:备份存储本地路径到/var/opt/gitlab/backups,同时每天凌晨6点自动拷贝到备份服务器/data/gitlab目录下;备份命名:按照gitlab系统自动明明规范,全量备份文件名为:hhmmssxxxx_yyyy_mm_dd_gitlab_13.9.3_gitlab_backup.tar;备份时间:每天凌晨3点开始自动执行备份;恢复策略:需要时手工恢复。
SVN备份策略:备份频度:每周进行一次全量备份备份地点:备份存储路径到/home/backup/svn/;同步到备份服务器路径/data/svn备份命名:备份文件名为:weekly_fully_backup.yymmdd,备份时间:每周日凌晨1点开始,周日凌晨4点拷贝到备份服务器上。
每月最后一周手工删除上月数据。
恢复策略:需要时手工恢复。
2、Gitlab数据自动备份服务器系统都为“ubuntu-20.XX.X-live-server-amd64”版Gitlab版本号为“13.X.X”每日定时备份任务编辑/etc/crontab 文件,添加定时任务,每天凌晨3点执行gitlab 备份# 添加定时任务,每天3点,自动执行将旧服务器上的gitlab备份操作0 3 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1编写完/etc/crontab 文件之后,需要重新启动cron服务#重新加载cron配置文件sudo /usr/sbin/service cron reload#重启cron服务sudo /usr/sbin/service cron restart设置7天文件过期时间每天3点备份,一年下来有365份,设置备份过期时间,备份目录下只保存还没过期的压缩包,减轻服务器压力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
团队里有一台SVN服务器,空间达到了几十个G,之前一直是隔段时间全盘拷贝备份,但是感觉太烦锁了,前段时间做了将这台服务器SVN的内容同步到另一台服务器上,挺好用的,总结一下,过程:
操作系统:windows server 2008
SVN:VisualSVN Server
服务器:A表示原来代码服务器,B表示同步服务器
备份服务器安装与A相同的VisualSVN Server版本
1.在B上的环境变量(path)添加:C:\Program Files (x86)\VisualSVN Server\bin 添加这一步主要是为了下面用到SVN的命令不用输路径
2.创建库,由于A服务器已有了很多库,所以做成了批处理文件的方式,文件内容如下:svnadmin create 盘符:/Repositories/项目库1
svnadmin create 盘符:/Repositories/项目库2
……
项目库1、2的名称与A里的一样
然后执行这个批处理文件,然后Repositories会出现很多库文件夹了……
3..创建目标库的hooks文件,文件名为pre-revprop-change.bat,内容为空,先放在..\sysmodel 目录下
4.将上步创建的文件拷到每个库文件夹下,跟上步一样,用批处理文件,文件内容:
copy /y 本地盘符:\Repositories\sysmodel\pre-revprop-change.bat 盘符:\Repositories\项目库1\hooks
copy /y 本地盘符:\Repositories\sysmodel\pre-revprop-change.bat 盘符:\Repositories\项目库2\hooks
……
然后执行这个批处理文件
5.关联A与B里的库(初始化),还是用批处理:
svnsync init file:///本地盘符:/Repositories/项目库1 项目库1的SVN路径(在A服务器上的)svnsync init file:///本地盘符:/Repositories/项目库2 项目库2的SVN路径(在A服务器上的)……
然后执行这个批处理文件,这一步是将A的内容同步下来了,时间有点久……
6.到上一步,B与A的内容一致了,但是如果A上某个库的项目库有更新怎么办呢?这时要用到windows里的任务计划功能了
(1)新建同步库.bat的批处理,内容如下:
svnsync sync file:///本地盘符:/Repositories/项目库1
svnsync sync file:///本地盘符:/Repositories/项目库2
……
(2)新建任务计划,在计划里调用上一步建立的批处理文件。
每当任务执行时,就可以将A服务器里对应项目库的更新内容差量更新下来了
1、完全备份脚本:
首先看一下SVN备份的完全备份。
文件名backup.bat:
echooff
remSubversion的安装目录
setSVN_HOME="C:\ProgramFiles\VisualSVNServer"
rem所有版本库的父目录
setSVN_ROOT=d:\svn//库目录
rem备份的目录
setBACKUP_SVN_ROOT=目的地(如:\\192.168.0.1\svnbak)
setBACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%
ifexist%BACKUP_DIRECTORY%gotocheckBack
echo建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.log
md%BACKUP_DIRECTORY%
rem验证目录是否为版本库,如果是则取出名称进行SVN备份
for/r%SVN_ROOT%%%Iin(.)do@ifexist"%%I\conf\svnserve.conf"%SVN_ROOT%\simpleBackup.bat "%%~fI"%%~nI
gotoend
:checkBack
echo备份目录%BACKUP_DIRECTORY%已经存在,请清空。
gotoend
:end
另一个文件:simpleBackup.bat
@echo正在备份版本库%1......
@%SVN_HOME%\bin\svnadminhotcopy%1%BACKUP_DIRECTORY%\%2
@echo版本库%1成功备份到了%2!以上是完全备份的脚本,只要把simpleBackup.bat拷到库目录底下即可使用。
2、增量备份脚本:
我们再来看一下SVN备份中的增量备份。
文件名命名为:post-commit.bat,放到hooks下即可,
echooff
setSVN_HOME="C:\ProgramFiles\VisualSVNServer"
setSVN_ROOT=d:\svn
setDELTA_BACKUP_SVN_ROOT=d:\delta//备份存放目录,一定要存在
setLOG_FILE=%1\backup.log
echobackuprevision%2>>%LOG_FILE%
for/r%SVN_ROOT%%%Iin(.)do%SVN_ROOT%\库名\hooks\deltaBackup.bat库名%2
gotoend
:end
deltaBackup.bat
@echo正在备份版本库%1......
%SVN_HOME%\bin\svnadmindump%SVN_ROOT%\%1--incremental--revision%2>>%DELTA_BACK UP_SVN_ROOT%\%1.dmp
@echo版本库%1成功备份到了%2!
将以上两个文件:post-commit.bat和deltaBackup.bat放到hooks下就可以直接使用。
注:红色字要根据实际情况来更改。
本节关于SVN备份内容讲解完毕,请关注本节其他相关报道。