我是SVN的新手,我想知道在Windows环境中有哪些方法可用于备份存储库?
你可以使用像(Linux)这样的东西:
svnadmin dump repositorypath | gzip > backupname.svn.gz
由于Windows不支持GZip,它只是:
svnadmin dump repositorypath > backupname.svn
我们使用svnadmin hotcopy,例如:
svnadmin hotcopy C:\svn\repo D:\backups\svn\repo
根据这本书:
您可以随时运行此命令并制作存储库的安全副本,无论其他进程是否正在使用存储库.
您当然可以使用ZIP(最好是7-Zip)备份副本.恕我直言这是备份选项中最直接的选择:在遇到灾难的情况下除了将其解压缩到位之外别无他法.
Subversion网站上有一个hotbackup.py脚本,它非常便于自动备份.
http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in
这是一个Perl脚本,它将:
备份回购
通过SCP将其复制到另一台服务器
检索备份
从备份创建测试存储库
做一个测试结帐
给您发送任何错误(通过cron)
剧本:
my $svn_repo = "/var/svn"; my $bkup_dir = "/home/backup_user/backups"; my $bkup_file = "my_backup-"; my $tmp_dir = "/home/backup_user/tmp"; my $bkup_svr = "my.backup.com"; my $bkup_svr_login = "backup"; $bkup_file = $bkup_file . `date +%Y%m%d-%H%M`; chomp $bkup_file; my $youngest = `svnlook youngest $svn_repo`; chomp $youngest; my $dump_command = "svnadmin -q dump $svn_repo > $bkup_dir/$bkup_file "; print "\nDumping Subversion repo $svn_repo to $bkup_file...\n"; print `$dump_command`; print "Backing up through revision $youngest... \n"; print "\nCompressing dump file...\n"; print `gzip -9 $bkup_dir/$bkup_file\n`; chomp $bkup_file; my $zipped_file = $bkup_dir . "/" . $bkup_file . ".gz"; print "\nCreated $zipped_file\n"; print `scp $zipped_file $bkup_svr_login\@$bkup_svr:/home/backup/`; print "\n$bkup_file.gz transfered to $bkup_svr\n"; #Test Backup print "\n---------------------------------------\n"; print "Testing Backup"; print "\n---------------------------------------\n"; print "Downloading $bkup_file.gz from $bkup_svr\n"; print `scp $bkup_svr_login\@$bkup_svr:/home/backup/$bkup_file.gz $tmp_dir/`; print "Unzipping $bkup_file.gz\n"; print `gunzip $tmp_dir/$bkup_file.gz`; print "Creating test repository\n"; print `svnadmin create $tmp_dir/test_repo`; print "Loading repository\n"; print `svnadmin -q load $tmp_dir/test_repo < $tmp_dir/$bkup_file`; print "Checking out repository\n"; print `svn -q co file://$tmp_dir/test_repo $tmp_dir/test_checkout`; print "Cleaning up\n"; print `rm -f $tmp_dir/$bkup_file`; print `rm -rf $tmp_dir/test_checkout`; print `rm -rf $tmp_dir/test_repo`;
脚本源以及有关此类备份的合理性的更多详细信息.
我使用svnsync,它将远程服务器设置为镜像/从属服务器.两周前我们有一台服务器停机,我能够很容易地将从机切换到主要位置(只需将从机存储库上的UUID重置为原始位置).
另一个好处是同步可以由中间人运行,而不是作为任一服务器上的任务.我有一个客户端,两个VPN同步它们之间的存储库.
svnadmin hotcopy
svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
此子命令对存储库进行完整的"热"备份,包括所有挂钩,配置文件,当然还有数据库文件.
您可以使用创建存储库备份(转储)svnadmin dump
.
然后,您可以使用它导入它svnadmin load
.
SVNBook中的详细参考: "使用svnadmin进行存储库数据迁移"
svnbackup over Google Code,一个.NET控制台应用程序.
基本上,如果svn服务器停止,则可以安全地复制存储库文件夹.(来源:https://groups.google.com/forum/?fromgroups#!topic/visssvn/i_55khUBrys%5B1-25%5D)
因此,如果您被允许停止服务器,那么只需使用某些脚本或备份工具即可复制存储库.Cobian Backup非常适合,因为它可以自动停止和启动服务,并且它可以执行增量备份,因此您只需备份最近更改过的存储库部分(如果存储库很大并且您要备份到远程位置,则非常有用) ).
例:
安装Cobian备份
添加备份任务:
将源设置为存储库文件夹(例如C:\Repositories\
),
添加备份前事件"STOP_SERVICE"
VisualSVN,
添加备份后事件,"START_SERVICE"
VisualSVN,
根据需要设置其他选项.我们已经设置了增量备份,包括删除旧备份,备份计划,目标,压缩包括.存档拆分等
利润!