Svn

Subversion 儲存庫大小和備份文件差異

  • July 23, 2014

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,並且您的備份文件仍然比儲存庫大得多。如果您的儲存庫包含許多相同的文件,這可以通過表示共享來解釋:

“雖然 detified 儲存從一開始就是 Subversion 設計的一部分,但多年來已經做出了額外的改進。使用 Subversion 1.4 或更高版本創建的 Subversion 儲存庫受益於文件內容的全文表示的壓縮。使用創建的儲存庫Subversion 1.6 或更高版本進一步享受了表示共享帶來的磁碟空間節省,該功能允許具有相同文件內容的多個文件或文件修訂引用該數據的單個共享實例,而不是每個都有自己的不同副本。” 來源和更多細節

要進一步縮小備份文件,您可以切換算法。bzip2 或 LZMA 的壓縮率更好,但比 gzip 慢。

您可以通過使用svn export將儲存庫的版本導出到測試目錄來測試它。如果您以與備份腳本中相同的方式壓縮該導出,則生成的文件大小應該大致相同。

引用自:https://serverfault.com/questions/589345