SVN备份说明

合集下载

svn备份实施方案

svn备份实施方案

svn备份实施方案为了确保数据安全,备份成为了极为重要的措施之一。

在使用SVN进行版本控制的情况下,也同样需要制定有效的备份实施方案。

下面将介绍一种基于SVN备份的实施方案。

1. 定期备份首先,我们需要制定一个定期备份的计划。

可以选择每天、每周或每月备份一次。

这取决于数据的重要性和变动频率。

一般情况下,每天备份一次是比较合理的选择。

2. 备份目标我们需要清楚地定义备份的目标。

SVN备份分为两个层次:仓库级备份和服务器级备份。

- 仓库级备份:备份每个仓库的版本信息、分支和标签等- 服务器级备份:备份服务器上的所有仓库以及配置信息等对于仓库级备份,可以使用SVN自带的`svnadmin hotcopy`命令进行备份。

对于服务器级备份,可以直接备份服务器上的SVN主目录。

3. 存储介质选择选择合适的存储介质来存放备份数据。

常见的选择有硬盘、网络存储和云存储等。

根据实际情况选择合适的存储介质,并确保备份数据能够安全地存放在该介质上。

4. 备份策略备份策略包括完全备份和增量备份。

- 完全备份:每次备份都将所有数据都备份一遍,独立存放。

这种备份方式保证了每次备份的完整性,但是需要较大的存储空间和备份时间。

- 增量备份:每次备份只备份自上次备份以来的新增和修改的数据。

这种备份方式可以节省存储空间和备份时间,但是恢复数据时需要依赖完整备份和增量备份一起使用。

在实施备份方案时,可以根据备份的频率和数据的重要性选择合适的备份策略。

5. 自动化备份为了减少人为失误,提高备份的稳定性和可靠性,建议使用自动化备份工具进行备份。

可以使用脚本编写自动备份的任务,并定时执行。

这样可以确保备份的及时性和准确性。

6. 数据完整性验证备份完成后,需要对备份数据进行验证,确保备份的完整性和可用性。

可以通过还原备份文件,检查还原后的数据是否与源数据完全一致来进行验证。

7. 定期恢复测试定期进行备份的恢复测试非常重要。

恢复测试可以帮助我们检查备份的可用性和恢复的有效性。

svn备份方案

svn备份方案

svn备份方案SVN(Subversion)是一种版本控制系统,广泛用于软件开发和团队协作中。

为了保护和恢复代码库,在使用SVN时备份是非常重要的。

本文将介绍一种可行的SVN备份方案,以确保代码的安全性和可靠性。

一、需求分析在制定备份方案之前,我们首先需要了解备份的需求。

根据实际情况,我们需要考虑以下几方面的需求:1. 数据的完整性:备份的数据应与原始数据完全一致,不可出现数据丢失或损坏情况。

2. 备份频率:备份的频率应根据代码更新的频率来确定,以确保备份数据的时效性。

3. 存储空间:备份数据的存储空间应合理控制,避免过多的空间占用。

4. 数据恢复:备份方案应包含数据的快速恢复方式,以便在需要时能够快速恢复代码。

二、备份方案基于以上需求,我们可以采用以下的SVN备份方案:1. 定期备份:根据代码更新的频率,制定定期备份策略,例如每天、每周或每月备份一次。

可以借助计划任务、Cron或其他定时调度工具来实现自动备份。

2. 完全备份:每次备份时,将整个SVN代码库文件夹进行完全备份,确保备份数据的完整性。

3. 增量备份:为了节省存储空间,可以在首次备份后,只备份新增或修改的文件和目录,而不是全量备份整个代码库。

这样可以减少备份数据量,加快备份速度。

4. 备份存储位置:将备份数据存储在不同于原始代码库的位置,以避免单点故障。

可以选择使用本地磁盘、网络共享存储或云存储等方式,确保备份数据的安全性。

5. 数据恢复测试:定期进行数据恢复测试,验证备份数据的可用性和恢复速度。

通过测试,及时修复备份方案中的问题,确保在数据丢失时能够快速恢复。

6. 备份日志记录:对备份过程进行日志记录,包括备份时间、备份内容等信息,以便后期跟踪备份记录和查询备份历史。

三、备份方案实施在实施备份方案时,需要按照以下步骤进行:1. 确定备份方案:根据实际需求,确定合适的备份方案,包括备份频率、备份策略和存储位置等。

2. 配置备份脚本:根据选定的备份方案,编写相应的备份脚本。

SVN仓库自动备份方法

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迁移及备份的⽅法【转】备份策略==============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下实现自动全量增量备份和异地备份

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命令是否正确, 可以查阅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同步备份

svnsync同步备份
备份库:backup
源库: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备份操作说明

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备份实施方案一、背景介绍随着信息技术的不断发展,数据备份已成为企业信息化管理中的重要环节。

在软件开发过程中,版本控制是非常重要的一环,而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备份研究

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同步)

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版本库备份和恢复

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详解(含备份与还原)

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备份与恢复

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备份手册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备份原代码操作步骤参考【精选】

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备份命令
但是这样不是很安全的方式因为如果在拷贝时版本库发生变化将会造成备份的结果不够准确失去备份的作用为此subversion提供了svnadminhotcopy命令可以
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备份还原操作手册

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数据自动备份和恢复说明

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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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备份内容讲解完毕,请关注本节其他相关报道。

相关文档
最新文档