Репозиторий Subversion размером 5,2 ГБ с 339 ревизиями.
Когда я выполнял резервное копирование с помощью сценария Perl, конечный результат размер файла составил 28 ГБ.
Могу я узнать, как это могло быть возможно. Я смущен.
Сценарий резервного копирования ниже.
#!/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 использует сложное сжатие. Однако вы сжали резервную копию с использованием максимального сжатия, а файл резервной копии по-прежнему намного больше, чем репозиторий. Если в вашем репозитории много одинаковых файлов, это можно объяснить совместным использованием представления:
«Хотя разделенное хранилище было частью разработки Subversion с самого начала, за прошедшие годы были внесены дополнительные улучшения. Репозитории Subversion, созданные с помощью Subversion 1.4 или более поздних версий, выигрывают от сжатия полнотекстовых представлений содержимого файлов. Репозитории, созданные с помощью Subversion 1.6 или более поздняя версия также имеет экономию дискового пространства, обеспечиваемую совместным использованием представления, функцией, которая позволяет нескольким файлам или версиям файлов с идентичным содержимым файла ссылаться на один общий экземпляр этих данных, а не на каждый из них, имеющий свою собственную отдельную копию ». источник и более подробная информация
Чтобы еще больше сжать файл резервной копии, вы можете переключить алгоритм. Степень сжатия bzip2 или LZMA лучше, но медленнее, чем у gzip.
Вы можете проверить это, используя svn export
для экспорта версии репозитория в тестовый каталог. Если вы сжимаете этот экспорт так же, как в сценарии резервного копирования, то результирующий размер файла должен быть примерно таким же.
Вот почему я использую svadmin hotcopy для создания резервных копий вместо дампа svnadmin. Недостатком горячей копии является то, что вы не можете выполнять инкрементальные вычисления до версии 1.8. Но hotcopy, по крайней мере, дает вам такое же сжатие, как репозиторий subversion.