Tamanho do repositório do Subversion & diferença do arquivo de backup

1

Um tamanho de repositório de subversão de 5,2 GB com 339 revisões.

Quando executo o backup usando o script Perl, o resultado final do tamanho do arquivo é de 28 GB.

Posso saber como isso é possível? Estou confuso.

Script de backup abaixo.

#!/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";
    
por Caterpillar 16.04.2014 / 08:32

2 respostas

2

O Subversion usa compactação sofisticada. No entanto, você gzipou seu backup usando compactação máxima e seu arquivo de backup ainda é muito maior que o repositório. Se o seu repositório incluir muitos arquivos idênticos, isso poderia ser explicado pelo compartilhamento de representação:

"While deltified storage has been a part of Subversion's design since the very beginning, there have been additional improvements made over the years. Subversion repositories created with Subversion 1.4 or later benefit from compression of the full-text representations of file contents. Repositories created with Subversion 1.6 or later further enjoy the disk space savings afforded by representation sharing, a feature which allows multiple files or file revisions with identical file content to refer to a single shared instance of that data rather than each having their own distinct copy thereof." source and more details

Para reduzir ainda mais o seu arquivo de backup, você pode alternar o algoritmo. As taxas de compressão do minério LZMA do bzip2 são melhores, mas são mais lentas que o gzip.

Você poderia testar isso usando svn export para exportar uma versão do repositório para um diretório de teste. Se você comprimir essa exportação da mesma forma que você fez no script de backup, o tamanho do arquivo resultante deve ser o mesmo.

    
por 16.04.2014 / 12:34
1

É por isso que eu uso o svadmin hotcopy para fazer backups ao invés do svnadmin dump. A desvantagem do hotcopy é que você não pode fazer incrementais até a versão 1.8. Mas o hotcopy pelo menos dá a você a mesma compactação que o repostório do subversion.

    
por 23.07.2014 / 17:00