在Windows环境下备份存储库的可用方法有哪些?
svnadmin dump repositorypath | gzip > backupname.svn.gz
由于Windows不支持GZip,所以只能:
svnadmin dump repositorypath > backupname.svn
svnadmin dump repositorypath | "%ProgramFiles%\7-Zip\7z.exe" a backup.7z -sibackupname.svn
这将创建一个名为“backup.7z”的文件,其中包含一个名为“backupname.svn”的单个文件,该文件是从svnadmin dump
获得的输出。 - Mattfor project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
这段代码的意思是:对于当前目录下的每个项目,先使用svnadmin命令将其备份,并将备份数据通过gzip进行压缩,最后将压缩的结果存储到指定路径下以该项目名为文件名的文件中。 - Fedir RYKHTIKsvnadmin hotcopy /path/to/repository /path/to/backup
svnadmin hotcopy C:\svn\repo D:\backups\svn\repo
根据该书的描述:在Subversion网站上有一个名为hotbackup.py的脚本,非常方便用于自动备份。
http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in
这里有一个Perl脚本,可以:
脚本如下:
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`;
我使用SVN同步,它可以将远程服务器设置为镜像/从属。两周前我们的服务器出了问题,但我很容易地将从属服务器切换到主要位置(只需将从属库的UUID重置为原始值)。
另一个好处是同步可以由中间人运行,而不是在任一服务器上作为任务运行。我曾经让两个VPN客户端之间同步过存储库。
你可以使用svnadmin dump
创建一个仓库备份(dump)。
接着,你可以使用svnadmin load
导入这个备份。
更详细的参考可见 SVNBook: “使用 svnadmin 进行仓库数据迁移”。
C:\Repositories\
),
* 添加预备份事件"STOP_SERVICE"
VisualSVN,
* 添加后备份事件"START_SERVICE"
VisualSVN,
* 根据需要设置其他选项。我们设置了增量备份,包括删除旧备份、备份计划、目标、压缩包拆分等。
3. 受益!关于备份工具,您可以使用命令提示符中的 svnadmin 工具(它可以执行 hotcopy 和 dump),此控制台位于您的 svn 服务器所在的同一目录中,或者您可以搜索 svn 备份工具。
我的建议是您同时执行这两种备份,并将它们转移到电子邮件帐户、Amazon S3 服务、FTP 或 Azure 服务中,这样您就可以获得安全备份,而无需在办公室外托管 svn 服务器。