Производит double
из целочисленного деления - нет другого пути без кастования (возможно, вы этого не сделаете) явно, но это произойдет).
Теперь мы можем попытаться получить точное значение double
(где num
и denom
- это тип int
и, конечно, с литьем ) -
double d = (double) num / denom;
double d = ((double) num) / denom;
double d = num / (double) denom;
double d = (double) num / (double) denom;
, но не double d = (double) (num / denom);
double d = num * 1.0 / denom;
double d = num / 1d / denom;
double d = ( num + 0.0 ) / denom;
double d = num; d /= denom;
, но не double d = num / denom * 1.0;
, а не double d = 0.0 + ( num / denom );
Вы могли использовать что-то как (Linux):
svnadmin dump repositorypath | gzip > backupname.svn.gz
, Так как Windows не поддерживает GZip, это справедливо:
svnadmin dump repositorypath > backupname.svn
как другие сказали, горячий-backup.py от команды Подрывной деятельности имеет некоторые хорошие функции просто svnadmin hotcopy
, я выполняю запланированную задачу на сценарии Python, что пауки для всех моих репозиториев на машине, и используют hotbackup для хранения ценности нескольких дней hotcopies (параноидальной из повреждения) и svnadmin svndump
на удаленной машине. Восстановление действительно легко от этого - до сих пор.
Если Вы используете формат репозитория FSFS (значение по умолчанию), то можно скопировать сам репозиторий для создания резервного копирования. С более старой системой BerkleyDB репозиторий не независим от платформы, и Вы обычно хотели бы использовать дамп svnadmin.
svnbook тема документации для резервного копирования рекомендует эти svnadmin hotcopy
команда, поскольку это будет заботиться о проблемах как используемые файлы и такой.
Мне нравится просто копировать весь repo каталог в мое местоположение резервирных копий. Тот путь, если что-то происходит, можно просто скопировать каталог назад и быть готовы пойти сразу.
Просто удостоверяются, что сохранили полномочия, в случае необходимости. Обычно, это - только беспокойство на машинах Linux.
можно создать резервное копирование репозитория ( дамп ) с svnadmin dump
.
можно тогда импортировать его в использовании svnadmin load
.
Подробная ссылка в SVNBook: "Миграция данных репозитория с помощью svnadmin"
svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
Эта подкоманда делает полное резервное копирование “hot” Вашего репозитория, включая все рычаги, конфигурационные файлы, и, конечно, файлы базы данных.
Я использую svnsync, который настраивает удаленный сервер как зеркало/ведомое устройство. У нас был сервер, понижаются две недели назад, и я смог переключиться, ведомое устройство в основное положение довольно легко (только должен был сбросить UUID на ведомом репозитории к оригиналу).
Другое преимущество - то, что синхронизация может быть выполнена посредником, а не как задача на любом сервере. У меня был клиент к двум синхронизациям VPNs репозиторий между ними.
Существует hotbackup.py сценарий, доступный на веб-сайте Подрывной деятельности, это довольно удобно для автоматизации резервных копий.
http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in
Мы используем svnadmin hotcopy, например:
svnadmin hotcopy C:\svn\repo D:\backups\svn\repo
Согласно книга :
можно выполнить эту команду в любое время и сделать безопасную копию репозитория, независимо от того, используют ли другие процессы репозиторий.
Вы можете, конечно, ZIP (предпочтительно С 7 zip) резервная копия. По моему скромному мнению, Это является самым простым из резервных опций: в случае бедствия существует мало, чтобы сделать кроме, разархивировали его назад в положение.
Вот сценарий 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 здесь .
svnbackup в Google Код, консольное приложение .NET.