Windows下SVN双机备份实现
SVN备份说明
团队里有一台SVN服务器,空间达到了几十个G,之前一直是隔段时间全盘拷贝备份,但是感觉太烦锁了,前段时间做了将这台服务器SVN的内容同步到另一台服务器上,挺好用的,总结一下,过程:操作系统:windows server 2008SVN:VisualSVN Server服务器:A表示原来代码服务器,B表示同步服务器备份服务器安装与A相同的VisualSVN Server版本1.在B上的环境变量(path)添加:C:\Program Files (x86)\VisualSVN Server\bin 添加这一步主要是为了下面用到SVN的命令不用输路径2.创建库,由于A服务器已有了很多库,所以做成了批处理文件的方式,文件内容如下:svnadmin create 盘符:/Repositories/项目库1svnadmin 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\hookscopy /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/项目库1svnsync sync file:///本地盘符:/Repositories/项目库2……(2)新建任务计划,在计划里调用上一步建立的批处理文件。
使用svnsync同步备份两台机器的svn
使用svnsync同步备份两台机器的svn使用svnsync 同步备份两台机器的svn 源目录:https://192.168.0.10/svn/source同步目标目录:https://192.168.0.2/svn/source_bak1.如果目标目录存在相同的项目,请先清除,重新建立空项目2.在目标服务器中建立svn版本库svnadmin create source_svnbak (svnadmin是svn的命令如果,没有将svn目录放到环境变量需要在其目录里面使用该句,若是windows可以直接点击右键创建svn)3.在新建项目文件夹下hooks中将pre_revprop_change.tmpl改为pre_revprop_change.bat并将内容清空然后输入exit 04.执行初始化svnsync init https://192.168.0.2/svn/source_bak https://192.168.0.10/svn/source(执行到这一般会出现一个问题svnsync: 认证失败)解决:需要把源文件source_svn中的conf拷贝到目标source_svnbak中替换conf 文件如果成功他会提示你输入用户名和密码(注:第一个是Administrator这个我觉得不用管随便输入,确定后才是你svn中填写的用户名和密码在conf中的文件有配置)正确后,显示Copied properties for revision 0.(复制版本0 的属性。
)5.执行同步svnsync sync https://192.168.0.2/svn/source_bak --username xxxx --password xxxx(一般端口号不用写,除非端口号不是默认安装过的需要写,用户名和密码都在conf中有配置)即svnsync sync 目标库正确执行后,显示复制版本号和提交数据等信息。
svn备份实施方案
svn备份实施方案为了确保数据安全,备份成为了极为重要的措施之一。
在使用SVN进行版本控制的情况下,也同样需要制定有效的备份实施方案。
下面将介绍一种基于SVN备份的实施方案。
1. 定期备份首先,我们需要制定一个定期备份的计划。
可以选择每天、每周或每月备份一次。
这取决于数据的重要性和变动频率。
一般情况下,每天备份一次是比较合理的选择。
2. 备份目标我们需要清楚地定义备份的目标。
SVN备份分为两个层次:仓库级备份和服务器级备份。
- 仓库级备份:备份每个仓库的版本信息、分支和标签等- 服务器级备份:备份服务器上的所有仓库以及配置信息等对于仓库级备份,可以使用SVN自带的`svnadmin hotcopy`命令进行备份。
对于服务器级备份,可以直接备份服务器上的SVN主目录。
3. 存储介质选择选择合适的存储介质来存放备份数据。
常见的选择有硬盘、网络存储和云存储等。
根据实际情况选择合适的存储介质,并确保备份数据能够安全地存放在该介质上。
4. 备份策略备份策略包括完全备份和增量备份。
- 完全备份:每次备份都将所有数据都备份一遍,独立存放。
这种备份方式保证了每次备份的完整性,但是需要较大的存储空间和备份时间。
- 增量备份:每次备份只备份自上次备份以来的新增和修改的数据。
这种备份方式可以节省存储空间和备份时间,但是恢复数据时需要依赖完整备份和增量备份一起使用。
在实施备份方案时,可以根据备份的频率和数据的重要性选择合适的备份策略。
5. 自动化备份为了减少人为失误,提高备份的稳定性和可靠性,建议使用自动化备份工具进行备份。
可以使用脚本编写自动备份的任务,并定时执行。
这样可以确保备份的及时性和准确性。
6. 数据完整性验证备份完成后,需要对备份数据进行验证,确保备份的完整性和可用性。
可以通过还原备份文件,检查还原后的数据是否与源数据完全一致来进行验证。
7. 定期恢复测试定期进行备份的恢复测试非常重要。
恢复测试可以帮助我们检查备份的可用性和恢复的有效性。
服务器双机备份方案
服务器双机备份方案1.硬件选型为了实现服务器双机备份,需要选用相同或相似的硬件配置。
这样可以确保在一台服务器发生故障时,另一台服务器可以顺利接管工作。
此外,还需要选择高可靠性的硬件组件,如服务器级别的硬盘、内存和电源等。
2.操作系统配置双机备份方案需要在两台服务器上安装相同配置的操作系统。
这样可以确保在主服务器故障时,备份服务器可以顺利接管工作,并保持相同的应用程序和数据状态。
同时,应保持操作系统的补丁和安全性更新的一致性,以减少漏洞和安全威胁。
3.数据同步数据同步是服务器双机备份方案的核心部分。
通过将主服务器的数据实时或定期复制到备份服务器上,可以确保数据的实时备份和增量同步。
以下是几种常用的数据同步方法:-本地复制:通过使用操作系统或文件系统的级别的复制功能,将主服务器上的数据复制到备份服务器上。
这种方法的优点是简单易用,但缺点是无法实现跨地理位置的数据备份。
- 数据库复制:对于数据库服务器,可以使用数据库的复制功能,如MySQL的主从复制、Oracle的Data Guard等。
这种方法可以实现实时的数据同步,同时支持跨地理位置的备份。
-存储复制:一些存储设备(如SAN、NAS)提供了数据复制的功能,可以直接将主服务器上的数据复制到备份服务器上。
这种方法可以减少对服务器性能的影响,并提供更高的数据处理速度。
4.高可用性和故障切换双机备份方案的目标是实现高可用性,即在主服务器故障时,备份服务器能够自动接管工作。
为了实现这一目标,可以使用以下技术和方法:-心跳检测:通过在主服务器和备份服务器之间发送心跳包,监测服务器的状态。
一旦主服务器故障,备份服务器可以立即接管工作。
-负载均衡:将用户请求分发到多个服务器上,以分担服务器的负载。
如果其中一台服务器故障,负载均衡器可以将请求重新路由到备份服务器上。
-故障切换:在主服务器故障的情况下,可以通过自动或手动方式将用户请求切换到备份服务器上。
这可以通过DNS解析、负载均衡器和其他技术来实现。
svn备份方案
svn备份方案SVN(Subversion)是一种版本控制系统,广泛用于软件开发和团队协作中。
为了保护和恢复代码库,在使用SVN时备份是非常重要的。
本文将介绍一种可行的SVN备份方案,以确保代码的安全性和可靠性。
一、需求分析在制定备份方案之前,我们首先需要了解备份的需求。
根据实际情况,我们需要考虑以下几方面的需求:1. 数据的完整性:备份的数据应与原始数据完全一致,不可出现数据丢失或损坏情况。
2. 备份频率:备份的频率应根据代码更新的频率来确定,以确保备份数据的时效性。
3. 存储空间:备份数据的存储空间应合理控制,避免过多的空间占用。
4. 数据恢复:备份方案应包含数据的快速恢复方式,以便在需要时能够快速恢复代码。
二、备份方案基于以上需求,我们可以采用以下的SVN备份方案:1. 定期备份:根据代码更新的频率,制定定期备份策略,例如每天、每周或每月备份一次。
可以借助计划任务、Cron或其他定时调度工具来实现自动备份。
2. 完全备份:每次备份时,将整个SVN代码库文件夹进行完全备份,确保备份数据的完整性。
3. 增量备份:为了节省存储空间,可以在首次备份后,只备份新增或修改的文件和目录,而不是全量备份整个代码库。
这样可以减少备份数据量,加快备份速度。
4. 备份存储位置:将备份数据存储在不同于原始代码库的位置,以避免单点故障。
可以选择使用本地磁盘、网络共享存储或云存储等方式,确保备份数据的安全性。
5. 数据恢复测试:定期进行数据恢复测试,验证备份数据的可用性和恢复速度。
通过测试,及时修复备份方案中的问题,确保在数据丢失时能够快速恢复。
6. 备份日志记录:对备份过程进行日志记录,包括备份时间、备份内容等信息,以便后期跟踪备份记录和查询备份历史。
三、备份方案实施在实施备份方案时,需要按照以下步骤进行:1. 确定备份方案:根据实际需求,确定合适的备份方案,包括备份频率、备份策略和存储位置等。
2. 配置备份脚本:根据选定的备份方案,编写相应的备份脚本。
Windows下SVN的备份方案
Windows下SVN的备份方案版本控制最关键的一件事是保证数据的安全性,不能因为磁盘损坏,程序故障造成库的无法挽回的错误,为此必需制定较完备的备份策略.在subversion中,我们有三种备份方式:完全备份,增量备份和同步版本库.1,完全备份:最常见和简单的备份就是直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了.但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会造马备份的结果不够准确,失去备份的作用,为此xubversion 提供了"svnadmin hotcopy"的命令,可以防止这种问题.比如有如下的版本库:D:/svnroot├─project1│├─conf│├─dav│├─db││├─revprops││├─revs││└─transactions│├─hooks│└─locks└─project2├─conf├─dav├─db│├─revprops│├─r evs│└─transactions├─hooks└─locks如果要把project1备份到D:/svnrootbackup目录下,只需要运行:svnadmin hotcopy d:/svnroot/project1 d:/svnrootbackup/project1ps:如果我们目录下有很多版本库,需要为每个版本库写这样一条语句备份,必需想办法优化这个过程.为此,建立以下的2个bat文件.simplebackup.bat:@echo 正在备份版本库%1......@%SVN_HOME%/bin/svnadmin hotcopy %1 %BACKUP_DIRECTORY%/%2@echo 版本库%1成功备份到了%2!backup.bat:echo offrem Subversion的安装目录set SVN_HOME="D:/Subversion"rem 所有版本库的父目录set SVN_ROOT=D:/svnrootrem 备份的目录set BACKUP_SVN_ROOT=D:/svnrootbakset BACKUP_DIRECTORY=%BACKUP_SVN_ROOT%/%date:~0,10%if exist %BACKUP_DIRECTORY% goto checkBackecho 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.log mkdir %BACKUP_DIRECTORY%rem 验证目录是否为版本库,如果是则取出名称备份for /r %SVN_ROOT% %%I in (.) do @if exist"%%I/conf/svnserve.conf" %SVN_ROOT%/simplebackup.bat "%%~fI" %%~nI goto end:checkBackecho 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
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服务器并建立好相关上传目录,建议使用用FileZilla_Server、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上传,AllBackupByFtp.bat@echo offREM ======设置区Start================================set ftpUser=svnset ftpPass=svnbackupset ftpIP=192.168.1.22set ftpPort=2016REM 指定从FTP下载下来的文件存放到本机哪个目录set ftpFolder=/全备份REM 本地需要备份的根目录set SvnBackupRoot=F:\[SvnBackup]\全备份REM 本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp)set SvnBackupFolder=%SvnBackupRoot%\%date:~0,10%.dmpREM 需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)set rarToFilePath=%SvnBackupFolder%.rarREM RAR执行文件的路径set rarExePath="C:\Program Files\WinRAR\"REM RAR执行文件的路径set bakupLogFilePath=%SvnBackupRoot%\BackUp.logREM FTP命令执行文件缓存set ftpFile=%cd%\TempFTP.txt>"%ftpFile%" (echo,open %ftpIP% %ftpPort%echo,%ftpUser%echo,%ftpPass%echo cd "%ftpFolder%"echo prompt offecho binecho put %rarToFilePath%echo put %bakupLogFilePath%echo bye)set Path=%Path%;%rarExePath%set logFilePath=%SvnBackupRoot%\ftpUp.logREM ======设置区End ================================echo ===================%date% 执行异地版本库全量备份开始================= >> %logFilePath%if not exist %SvnBackupFolder% goto Error1echo %time:~0,8% 备份压缩开始... >> %logFilePath%WinRAR.exe a -ep1 -k -r -s -ibck %rarToFilePath% %SvnBackupFolder%echo %time:~0,8% 备份压缩成功,压缩的文件路径为:%rarToFilePath% >> %logFilePath%echo %time:~0,8% 备份压缩继续上传FTP开始... >> %logFilePath%ftp -v -i -s:"%ftpFile%"echo %time:~0,8% 上传FTP成功,上传FTP目录为:%ftpFolder% >> %logFilePath%del /q /s /f %rarToFilePath%echo. >> %logFilePath%goto end:Error1echo.echo %time:~0,8% 提示: 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! >> %logFilePath%echo %time:~0,8% 备份失败! >> %logFilePath%echo. >> %logFilePath%echo 提示:echo 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成!:Endecho.echo 程序执行结束!1.2增量备份BAT1)SVN数据库的增量备份,IncreBackUp.bat::设置所有版本库备份根目录set REPOS_BACKUP_ROOT=F:\[SvnBackup]\增量备份if 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上传,IncreBackupByFtp.bat@echo offREM ======设置区Start================================set ftpUser=svnset ftpPass=svnbackupset ftpIP=192.168.1.22set ftpPort=2016REM 指定从FTP下载下来的文件存放到本机哪个目录set ftpFolder=/增量备份REM 本地需要备份的根目录set SvnBackupRoot=F:\[SvnBackup]\增量备份REM 本地需要打压缩包的备份目录(今天备份文件夹2016-01-01.dmp)set SvnBackupFolder=%SvnBackupRoot%\%date:~0,10%.dmpREM 需要压缩成的文件路径及文件名(今天备份上传文件2016-01-01.dmp.rar)set rarToFilePath=%SvnBackupFolder%.rarREM RAR执行文件的路径set rarExePath="C:\Program Files\WinRAR\"REM RAR执行文件的路径set bakupLogFilePath=%SvnBackupRoot%\BackUp.logREM FTP命令执行文件缓存set ftpFile=%cd%\TempFTP.txt>"%ftpFile%" (echo,open %ftpIP% %ftpPort%echo,%ftpUser%echo,%ftpPass%echo cd "%ftpFolder%"echo prompt offecho binecho put %rarToFilePath%echo put %bakupLogFilePath%echo bye)set Path=%Path%;%rarExePath%set logFilePath=%SvnBackupRoot%\ftpUp.logREM ======设置区End ================================echo ===================%date% 执行异地版本库增量备份开始.=================== >> %logFilePath%if not exist %SvnBackupFolder% goto Error1echo %time:~0,8% 备份压缩开始... >> %logFilePath%WinRAR.exe a -ep1 -k -r -s -ibck %rarToFilePath% %SvnBackupFolder%echo %time:~0,8% 备份压缩成功,压缩的文件路径为:%rarToFilePath% >> %logFilePath%echo %time:~0,8% 备份压缩继续上传FTP开始... >> %logFilePath%ftp -v -i -s:"%ftpFile%"echo %time:~0,8% 上传FTP成功,上传FTP目录为:%ftpFolder% >> %logFilePath%del /q /s /f %rarToFilePath%echo. >> %logFilePath%goto end:Error1echo.echo %time:~0,8% 提示: 需要进行压缩打包的备份文件夹%SvnBackupFolder%不存在,请确认SVN是否本地备份完成! >> %logFilePath%echo %time:~0,8% 备份失败! >> %logFilePath%echo. >> %logFilePath%echo 提示: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 > fileName.tmp::依次操作tmp文件中包含的备份文件for /f %%i in (fileName.tmp) 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还原成功!)))::删除临时文件del fileName.tmpdel folderName.tmpecho.echo 全部版本库还原成功!goto end:Errorecho.echo 版本库备份目录%REPOS_BACKUP_ROOT%不存在,请确认后重新运行程序! goto End:End。
visualsvn热备份(sync同步)
利用svnsync同步SVN版本库配置环境:主SVN Sever:windows 2003 + VisualSVN-Server-2.5.12备SVN Sever:windows 2003 + VisualSVN-Server-2.5.12目标:将之前主库上的SVN数据迁移到VisualSVN上,然后在实现版本库的远程自动备份,版本库备份到另一台机器上。
VisualSVN服务器端安装双击VisualSVN-Server-2.5.12.msi,然后点击“Next”下一步;点击“Next”下一步选择第一个,点击“Next”下一步Location是VisualSVN Server安装路径,Repositories是版本库路径,port指定端口,Use secure connection:是否用https安全连接;如果不改,点击“Next”下一步;点击“install”继续安装点击“Finish”安装完成VisualSVN主备配置:主库服务器:(IP:192.168.22.66)1.首先将之前SVN版本库目录下的文件COPY到VisualSVN版本库C:\Repositories\目录下,刷新VisualSVN就可以看到;2.添加用户,设置权限: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→为备份库的所在的物理路径(视实际库路径而定)http://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 http://192.168.22.62:80/svn/back_svn --username svn_back --password 111111其中http://192.168.22.62:80/svn/back_svn为备份库CheckOut路径配置结束,以后每次commit时,数据都会备份到备份库中。
在Windows平台下迁移SVN服务器
在Windows平台下迁移SVN服务器如何迁移SVN服务器数据库(Windows平台互迁)最近因为要换服务器,服务器上面的所有数据均要迁移至新服务器,因此,SVN 服务器数据也是需要备份迁移的,本文结合实际操作,记录具体操作步骤如下:1、将原服务器SVN资源备份;1.首先在原服务器创建一个备份文件夹,如:E:\svn_bak2.在svn_bak文件夹中创建一个后缀名为.dump的文件,如:E:\svn_bak\bak.dump3. 进入cmd,cd命令到你的svn服务器安装目录的bin文件下,如:cd C:\Program Files (x86)\VisualSVN Server\bin4.cmd命令继续输入svnadmin dump E:\repos\repos > E:\sav_bak\bak.dump回车其中E:\repos\repos是svn项目工程目录文件夹5.执行完毕之后,可以在E:\sav_bak中找到备份好的文件bak.dump,将其打包。
2、新服务器:1.在新服务器上安装好SVN server;2. 创建一个还原文件夹,如:svn_des,将原服务器备份好的文件拷贝在此文件夹中,并解压,如:3. 进入cmd,cd命令到你的svn服务器安装目录的bin文件下,如:cd F:\Program Files\VisualSVN Server\bin4.cmd命令行继续输入 svnadmin create F:\Repositories\repos,其中F:\Repositories\repos是svn项目工程目录文件夹;5. cmd命令行继续输入svnadmin load F:\Repositories\repos < F:\svn_des\bak.dump 回车。
ok,服务器备份完成,但是用户和用户组,以及文件权限需要重新录入和操作。
双机备份方案
双机备份方案第1篇双机备份方案一、背景与目的随着信息技术的不断发展,企业对数据安全和系统稳定性的需求日益增长。
为确保关键业务系统的持续运行和数据的一致性,降低因硬件故障、软件错误、人为破坏等因素导致的风险,特制定本双机备份方案。
二、方案概述本方案采用双机热备的架构,通过实时同步数据,实现业务系统的高可用性和数据的安全性。
具体包括以下部分:1. 硬件设备选型:选择性能稳定、兼容性好的硬件设备,确保系统运行的可靠性。
2. 软件系统配置:部署双机热备软件,实现数据的实时同步和故障切换。
3. 数据备份策略:制定合理的数据备份策略,确保数据的安全性和完整性。
4. 监控与运维:建立完善的监控体系,定期进行系统检查和维护,确保双机备份系统的稳定运行。
三、硬件设备选型1. 服务器:选用品牌服务器,配置相同或相近的硬件资源,包括CPU、内存、硬盘等。
2. 存储设备:采用高性能的存储设备,满足业务系统对数据读写速度的需求。
3. 网络设备:配置高性能的网络交换机,确保网络带宽和稳定性。
4. 电源设备:采用冗余电源,提高系统的电源供应可靠性。
四、软件系统配置1. 操作系统:选用稳定性好、兼容性强的操作系统,如Windows Server、Linux等。
2. 双机热备软件:部署专业的双机热备软件,如VMware HA、Microsoft Cluster等。
3. 数据同步:配置数据同步策略,确保业务数据在两台服务器之间实时同步。
4. 故障切换:设置故障切换策略,当主服务器发生故障时,备用服务器能够自动接管业务。
五、数据备份策略1. 完全备份:定期对业务数据进行完全备份,以备不时之需。
2. 增量备份:在完全备份的基础上,对发生变化的业务数据进行增量备份。
3. 备份存储:将备份数据存储在安全的存储设备上,如磁带库、云存储等。
4. 备份验证:定期对备份数据进行验证,确保其可用性和完整性。
六、监控与运维1. 系统监控:部署监控系统,实时监测服务器、存储设备、网络设备等硬件设备的运行状态。
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。
VSS 备份的两种方法
VSS 备份的两种方法曾经在论坛中发过一篇关于VSS备份的帖子,可是,写得太潦草,有的网友给我回了帖子,询问一些描述不清晰的地方。
所以,我把VSS备份步骤做了整理,附上操作中的一些示意图,希望大家能更好地了解这个过程。
如果谁还有看不明白的地方,请发Email (moonmingyue@)给我,谢谢。
方案一:用WINDOWS自带的备份功能直接备份VSS数据库目录1、点击开始->附件->系统工具->备份2、选择计划作业->点击添加作业->备份向导->下一步3、备份选定的文件,驱动器或者网络路径->下一步(选择VSS数据库路径)在下面这幅图中,您可以选择网络数据。
也就是说,这个备份进程如果不是在VSS服务期上运行的话,可以把VSS数据库信息存放的文件夹映射成网络路径。
如果在本机上,直接选择VSS数据库信息存放的文件夹就可以啦。
4、在下面这幅图中,备份媒体类型是灰掉的。
如果有磁带机等其它媒体格式的话,这个选项就不会是DISABLE的了。
设定备份媒体或者文件名,并标出路径,下一步。
5、选择备份操作类型,下一步6、为了安全起见,选择备份后验证数据,下一步。
7、下一步8、命名备份标签。
9、选择“以后”选项,输入本机的管理员密码10、选择“设定备份计划”设定开始备份的时间点11、给备份作业起个作业名,规定开始时间。
下一步点击“完成”,你就会看到12、检查一下吧!开始->附件->系统工具->任务计划中添加了新的一项。
13、单击右键,选择属性,可以修改自己不满意的设置。
14、设置任务步骤完成。
15、当到了规定的时间,这个任务就会自动运行了:)方案一的另一种解决方法:可以用压缩程序配合WINDOWS任务来实现11-15步介绍的是一种定期COPY工作,如果文件太大,需要压缩,该怎么办呢?例如,用WinRar配合Windoows中的任务计划来实现。
首先,我们要了解WinRar的命令行格式。
双机备份方案
双机备份方案一、背景在现代社会,数据的重要性日益突显。
无论是企业还是个人用户,在面临数据丢失或损坏的风险时,都需要一种可靠的备份方案来保护数据的安全性。
双机备份方案是一种常见且有效的备份解决方案,它通过使用两台独立的计算机进行数据备份,大大减少了数据丢失的风险。
二、双机备份方案的概述双机备份方案是指通过使用两台完全相同的物理或虚拟机器来备份数据。
其中一台机器被称为主机,另一台机器被称为备机。
主机用于处理用户的请求并存储数据,备机则用于自动备份主机上的数据,以便在主机发生故障或数据丢失时能够及时恢复。
三、双机备份方案的关键组件1. 主机主机是双机备份方案中的核心组件之一。
它负责处理用户的请求,提供数据的存储和访问功能。
主机需要具备以下特点:•可靠性:主机应具备高可靠性,以保证数据的完整性和可用性。
•性能:主机应具备足够的计算和存储能力,以满足用户的需求。
•安全性:主机应具备安全性措施,以保护数据的机密性。
2. 备机备机是双机备份方案中的另一个核心组件。
它负责自动备份主机上的数据,并在主机发生故障或数据丢失时进行恢复。
备机需要具备以下特点:•同步性:备机应能够实时同步主机上的数据,以保证备份数据的及时性。
•可恢复性:备机应能够在主机发生故障或数据丢失时快速恢复数据。
•灵活性:备机应能够自动适应主机的变化,以保证备份方案的持续可用性。
3. 数据同步工具数据同步工具是双机备份方案中的重要组件之一。
它负责在主机和备机之间进行数据的同步和传输。
数据同步工具需要具备以下特点:•高效性:数据同步工具应能够高效地进行数据的同步和传输,以减少备份过程对系统性能的影响。
•可靠性:数据同步工具应能够保证数据的完整性和一致性,以避免数据丢失或损坏。
•灵活性:数据同步工具应能够根据用户的需求进行配置,以满足不同场景下的数据同步需求。
四、双机备份方案的实施步骤1. 确定备份策略在实施双机备份方案之前,需要确定合适的备份策略。
VSS 备份的两种方法
VSS 备份的两种方法曾经在论坛中发过一篇关于VSS备份的帖子,可是,写得太潦草,有的网友给我回了帖子,询问一些描述不清晰的地方。
所以,我把VSS备份步骤做了整理,附上操作中的一些示意图,希望大家能更好地了解这个过程。
如果谁还有看不明白的地方,请发Email (moonmingyue@)给我,谢谢。
方案一:用WINDOWS自带的备份功能直接备份VSS数据库目录1、点击开始->附件->系统工具->备份2、选择计划作业->点击添加作业->备份向导->下一步3、备份选定的文件,驱动器或者网络路径->下一步(选择VSS数据库路径)在下面这幅图中,您可以选择网络数据。
也就是说,这个备份进程如果不是在VSS服务期上运行的话,可以把VSS数据库信息存放的文件夹映射成网络路径。
如果在本机上,直接选择VSS数据库信息存放的文件夹就可以啦。
4、在下面这幅图中,备份媒体类型是灰掉的。
如果有磁带机等其它媒体格式的话,这个选项就不会是DISABLE的了。
设定备份媒体或者文件名,并标出路径,下一步。
5、选择备份操作类型,下一步6、为了安全起见,选择备份后验证数据,下一步。
7、下一步8、命名备份标签。
9、选择“以后”选项,输入本机的管理员密码10、选择“设定备份计划”设定开始备份的时间点11、给备份作业起个作业名,规定开始时间。
下一步点击“完成”,你就会看到12、检查一下吧!开始->附件->系统工具->任务计划中添加了新的一项。
13、单击右键,选择属性,可以修改自己不满意的设置。
14、设置任务步骤完成。
15、当到了规定的时间,这个任务就会自动运行了:)方案一的另一种解决方法:可以用压缩程序配合WINDOWS任务来实现11-15步介绍的是一种定期COPY工作,如果文件太大,需要压缩,该怎么办呢?例如,用WinRar配合Windoows中的任务计划来实现。
首先,我们要了解WinRar的命令行格式。
双机备份方案
双机备份方案在当今的数字化时代,数据备份变得越来越重要。
无论是个人用户还是企业机构,数据的丢失都可能给其带来巨大的损失。
因此,建立一个可靠且安全的备份方案成为了当务之急。
双机备份方案就是其中一种备份策略,它通过使用两台独立的服务器来实现数据的备份和保护。
本文将介绍双机备份方案的原理、优势以及实施方法。
一、原理双机备份方案采用了主备模式,其中一台服务器作为主机,负责处理所有的数据读写和运算任务。
而另一台服务器则作为备机,持续地对主机上的数据进行实时同步备份。
这种主备模式的使用可以确保在主机崩溃或发生故障时,备机能够立即接管主机的工作,并确保数据的连续性和可用性。
二、优势双机备份方案具有许多显著的优势。
首先,它提供了高可靠性和冗余性。
由于备机实时备份主机上的数据,即使主机发生故障,备机仍然可以保持数据的完整性,避免数据的丢失。
其次,双机备份方案可以大幅度提高系统的可用性。
当主机发生故障时,备机能够迅速接管并继续提供服务,减少了系统的停机时间,对于需要高可用性的应用场景来说,这是非常重要的。
此外,双机备份方案还提供了更好的故障恢复能力。
备机不仅仅是备份数据,它还可以在主机故障后快速进行故障切换,使得系统能够在最短的时间内恢复正常运行。
三、实施方法实施双机备份方案需要一些技术手段和策略。
首先,服务器之间的数据同步是关键。
常见的数据同步方法有镜像同步和增量同步。
镜像同步是指将主机上的所有数据完全复制到备机上,其优点是备机上的数据是与主机完全一致的,但缺点是同步过程可能耗费较长的时间和带宽。
而增量同步则是只将主机上发生变化的数据同步到备机,其优点是同步速度快,但缺点是备机上的数据只是主机数据的一个增量版本。
根据实际需求选择适当的同步方式。
其次,双机备份方案需要考虑数据的安全性。
数据的备份不仅仅是为了防止硬件故障和意外丢失,还需要防止数据泄露和被恶意攻击。
因此,进行数据加密和访问权限控制是必要的。
使用安全性较高的加密算法对备份数据进行加密,可以保证数据在备份过程中和存储过程中的安全。
Windows下SVN双机备份实现
备份机上操作1.新建Repository2.在hooks下新建pre-revprop-change.bat空白文件3.执行初始化svnsync init file:///{之前新建立的Repository} {源代码地址URL}4.执行同步svnsync sync file:///{之前新建立的Repository}执行完上述步骤后备份机上代码已经和需要备份的代码完全一致源机操作(就是正常使用的代码服务器)在该机上操作时为了保证提交代码后自动同步到备份机器上1.在hooks目录下建立post-commit.bat文件(文件内容如下),每次提交代码该文件会自动执行以保证同步到备份服务器set SVN_HOME="C:\Program Files\VisualSVN Server"%SVN_HOME%\bin\svnsync sync --non-interactive {备份机URL} --username xxx --password xxxx2.赋予Visual Server执行bat文件的权限,如下图将超级管理员作为Visual Server登陆的账户3.由于备份机一般采用https的登陆验证方式,所以需要在源机上先执行一遍同步保证操作系统记住验证的信息,执行如下%SVN_HOME%\bin\svnsync sync --non-interactive {备份机URL}系统会提示是否信任,输入p然后可能会需要输入系统管理员的密码和备份机上的SVN用户名和密码(备份机上建立的Repository的用户名和密码)4.备份机网络延迟或者不通可能造成提交代码时报下面的类似错误。
该错误只是没有将提交的代码同步到备份机上,实际上代码已经提交到源机器上成功。
该错误可以忽略,因为每次有提交都会检查两边是否同步,只要最后提交的代码成功,之前提前失败未同步的代码也会同步过去。
Windows下SVN版本库的自动备份脚本
Windows下SVN版本库的自动备份脚本自动将F:\SVN下的所有的版本库备份到F:\BAK目录下,并用bzip2自动压缩。
可以通过计划任务定期调用。
为了支持压缩需要在SVN_BIN下方置 bzip2.exe,cygwin1.dll。
1、BACKUP.bat@echo offrem 设置SVN可执行文件所在的目录set SVN_BIN=F:\svn-win32-1.4.0\binrem 设置SVN代码库所在的驱动器盘符set SVN_DRV=F:rem 设置SVN代码库所在的目录set SVN_DIR=svnrem 设置备份文件存贮的路径set SVN_BAK=F:\bakrem 如果备份目录不存在,则创建之if not exist %SVN_BAK% md %SVN_BAK%rem SVN代码库根目录的完整路径set SVN_DB=%SVN_DRV%\%SVN_DIR%%SVN_DRV%cd \cd %SVN_DIR%echo 开始备份SVN代码库...for /F %%d in ('dir /AD /B') do call %SVN_DB%\work.bat %%decho 备份SVN代码库完毕...%SVN_DRV%cd \@echo on2、WORK.batset SVN_SRC=%1for /F "tokens=1,2,3 delims=- " %%1 in ('Date /T') do set DATE=%%1-%%2-%%3for /F "tokens=1,2 delims=:" %%1 in ('time /T') do set TIME=%%1-%%2if not exist %SVN_BAK%\%DATE% md %SVN_BAK%\%DATE% setBAK_TO=%SVN_BAK%\%DATE%\%SVN_SRC%@%DATE%@%TI ME%.svnecho 开始将 %SVN_DB%\%SVN_SRC% 备份到 %BAK_TO% ...%SVN_BIN%\svnadmin.exedump %SVN_DB%\%SVN_SRC% >> %BAK_TO%echo 开始压缩 %BAK_TO% ...rem %SVN_BIN%\gzip -9 %BAK_TO%%SVN_BIN%\bzip2 %BAK_TO%echo 压缩 %BAK_TO% 完毕echo 将 %SVN_DB%\%SVN_SRC% 备份到 %BAK_TO% 完毕set BAK_TO=set SVN_SRC=。
windows下svn备份
windows下svn备份windows下svn备份2010-02-08 14:29一、采用svn自带备份功能进行完全备份,需要下面两个文件,放在仓库的父目录里面。
1)simplebackup.bat@echo 正在备份版本库%1......@%SVN_HOME%\bin\svnadminhotcopy %1 %BACKUP_DIRECTORY%\%2@echo 版本库%1成功备份到了%2!(注意:此文件内容就这三行,无需做任何修改)2)backup.batecho offrem Subversion的安装目录set SVN_HOME="F:\Program Files\Subversion"rem 所有版本库的父目录set SVN_ROOT=E:\svnrepositoryrem 备份的目录set BACKUP_SVN_ROOT=F:\share\all(如果是局域网中的另一台机子,那么等号后面可以写\\192.168.0.*\share\all,不过要特别注意的是,share文件夹必须设成共享,既要能读还要能写,这样才能把仓库写进去)setBACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10% if exist %BACKUP_DIRECTORY% goto checkBackecho 建立备份目录%BACKUP_DIRECTORY%>>%SVN_ROOT%/backup.log mkdir %BACKUP_DIRECTORY%rem 验证目录是否为版本库,如果是则取出名称备份for /r %SVN_ROOT% %%I in (.) do @if exist "%%I\conf\svnserve.conf" %SVN_ROOT%\simplebackup.bat "%%~fI" %%~nIgoto end:checkBackecho 备份目录%BACKUP_DIRECTORY%已经存在,请清空。
svn主备机如何备份操作步骤
主备机同步操作步骤
1、两台服务器,主服务器A:192.168.0.10,备份服务器B:192.168.0.71
2、两台服务器安装svn服务器(SVN服务器找到安装包直接安装)
3、在A上创建版本库。
手动创建版本库Work
右击Repositories,新建---Repository…,输入Work,点击OK按钮。
4、在B上用命令创建版本库和使用同步工具svnsync:
创建与主服务器同名版本库:svnadmin create d:/Repositories/Work
初始化同步工具:svnsync init http://192.168.0.71:8080/svn/Work http://192.168.0.10/svn/Work
http://192.168.0.71:8080/svn/Work 是备份服务器URL
http://192.168.0.10/svn/Work 主服务器URL
执行这条语句后会提示输入密码;这里面输入计算机的密码,然后提示输入用户名,这里输入在主服务器上创建的svn账号
,密码输入SVN账号的密码,注意用户名密码是在主服务器上创建
同步:svnsync sync http://192.168.0.71:8080/svn/Work
同上输入计算机名,用户名和密码
5、完成同步备份。
visualsvn热备份(sync同步)
利用svnsync同步SVN版本库配置环境:主SVN Sever:windows 2003 + VisualSVN-Server-2.5.12备SVN Sever:windows 2003 + VisualSVN-Server-2.5.12目标:将之前主库上的SVN数据迁移到VisualSVN上,然后在实现版本库的远程自动备份,版本库备份到另一台机器上。
VisualSVN服务器端安装双击VisualSVN-Server-2.5.12.msi,然后点击“Next”下一步;点击“Next”下一步选择第一个,点击“Next”下一步Location是VisualSVN Server安装路径,Repositories是版本库路径,port指定端口,Use secure connection:是否用https安全连接;如果不改,点击“Next”下一步;点击“install”继续安装点击“Finish”安装完成VisualSVN主备配置:主库服务器:(IP:192.168.22.66)1.首先将之前SVN版本库目录下的文件COPY到VisualSVN版本库C:\Repositories\目录下,刷新VisualSVN就可以看到;2.添加用户,设置权限: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→为备份库的所在的物理路径(视实际库路径而定)http://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 http://192.168.22.62:80/svn/back_svn --username svn_back --password 111111其中http://192.168.22.62:80/svn/back_svn为备份库CheckOut路径配置结束,以后每次commit时,数据都会备份到备份库中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
备份机上操作
1.新建Repository
2.在hooks下新建pre-revprop-change.bat空白文件
3.执行初始化svnsync init file:///{之前新建立的Repository} {源代码地址URL}
4.执行同步svnsync sync file:///{之前新建立的Repository}
执行完上述步骤后备份机上代码已经和需要备份的代码完全一致
源机操作(就是正常使用的代码服务器)
在该机上操作时为了保证提交代码后自动同步到备份机器上
1.在hooks目录下建立post-commit.bat文件(文件内容如下),每次提交代码该文件会自动执行以保证同步到备份服务器
set SVN_HOME="C:\Program Files\VisualSVN Server"
%SVN_HOME%\bin\svnsync sync --non-interactive {备份机URL} --username xxx --password xxxx
2.赋予Visual Server执行bat文件的权限,如下图将超级管理员作为Visual Server登陆的账户
3.由于备份机一般采用https的登陆验证方式,所以需要在源机上先执行一遍同步保证操作系统记住验证的信息,执行如下
%SVN_HOME%\bin\svnsync sync --non-interactive {备份机URL}
系统会提示是否信任,输入p
然后可能会需要输入系统管理员的密码和备份机上的SVN用户名和密码(备份机上建立的Repository的用户名和密码)
4.备份机网络延迟或者不通可能造成提交代码时报下面的类似错误。
该错误只是没有将提交的代码同步到备份机上,实际上代码已经提交到源机器上成功。
该错误可以忽略,因为每次有提交都会检查两边是否同步,只要最后提交的代码成功,之前提前失败未同步的代码也会
同步过去。