Subversion 存储库大小为 5.2 GB,包含 339 个修订版。
当我使用 Perl 脚本运行备份时,文件大小的最终结果是 28 GB。
我能知道,这怎么可能。我很困惑。
下面的备份脚本。
#!/usr/bin/perl
my $svn_repo = "/subversion/REPONAME";
my $bkup_dir = "/mnt/Subversion/SVN-Backups/REPO_DIR/";
my $bkup_file = "REPONAME_backup-";
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";
Subversion 使用复杂的压缩。但是,您使用最大压缩对备份进行了 gzip,并且您的备份文件仍然比存储库大得多。如果您的存储库包含许多相同的文件,这可以通过表示共享来解释:
要进一步缩小备份文件,您可以切换算法。bzip2 或 LZMA 的压缩率更好,但比 gzip 慢。
您可以通过使用
svn export
将存储库的版本导出到测试目录来测试它。如果您以与备份脚本中相同的方式压缩该导出,则生成的文件大小应该大致相同。这就是我使用 svadmin hotcopy 而不是 svnadmin dump 来进行备份的原因。hotcopy 的缺点是直到 1.8 版才能进行增量操作。但是 hotcopy 至少给你和 subversion repository 一样的压缩。