[windows] SVN 저장소 백업 전략

SVN을 처음 사용하고 있으며 Windows 환경에서 리포지토리를 백업하는 데 사용할 수있는 방법을 알고 싶습니다.



답변

(Linux)와 같은 것을 사용할 수 있습니다.

svnadmin dump repositorypath | gzip > backupname.svn.gz

Windows는 GZip을 지원하지 않으므로 다음과 같습니다.

svnadmin dump repositorypath > backupname.svn


답변

다음과 같이 svnadmin hotcopy를 사용합니다.

svnadmin hotcopy C:\svn\repo D:\backups\svn\repo

당으로 :

다른 프로세스가 저장소를 사용하는지 여부에 관계없이 언제든지이 명령을 실행하고 저장소의 안전한 사본을 작성할 수 있습니다.

물론 백업 사본을 ZIP (바람직하게는 7-Zip) 할 수 있습니다. IMHO 백업 옵션 중 가장 간단합니다. 재난이 발생하면 다시 압축을 풀고 다른 작업을 수행 할 수 있습니다.


답변

Subversion 웹 사이트에는 백업 자동화에 매우 유용한 hotbackup.py 스크립트가 있습니다.

http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in


답변

다음은 Perl 스크립트입니다.

  1. 리포지토리 백업
  2. SCP를 통해 다른 서버로 복사
  3. 백업 검색
  4. 백업에서 테스트 저장소 작성
  5. 시험 체크 아웃
  6. cron을 통해 오류가있는 이메일

스크립트 :

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`;

이 유형의 백업에 대한 합리성에 대한 스크립트 소스 및 세부 사항.


답변

svnsync를 사용 하여 원격 서버를 미러 / 슬레이브로 설정합니다. 2 주 전에 서버가 다운되었으며 슬레이브를 기본 위치로 쉽게 전환 할 수있었습니다 (슬레이브 저장소의 UUID를 원래 위치로 재설정하기 만하면 됨).

또 다른 이점은 동기화가 두 서버 중 하나의 작업이 아닌 중개인에 의해 실행될 수 있다는 것입니다. 두 개의 VPN에 대한 클라이언트가 그들 사이에 저장소를 동기화했습니다.


답변

svnadmin 핫 카피

svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH

이 부속 명령은 모든 후크, 구성 파일 및 데이터베이스 파일을 포함하여 저장소의 전체 “핫”백업을 작성합니다.


답변

.NET 콘솔 응용 프로그램 인 Google 코드에서의 svnbackup