sourcecode

SVN 저장소 백업 전략

codebag 2023. 4. 23. 10:18
반응형

SVN 저장소 백업 전략

윈도우즈 환경에서 저장소를 백업하는 데 사용할 수 있는 방법은 무엇입니까?

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

svnadmin dump repositorypath | gzip > backupname.svn.gz

Windows 는 GZip 를 서포트하고 있지 않기 때문에, 다음과 같습니다.

svnadmin dump repositorypath > backupname.svn

svnadmin 핫카피를 사용합니다.예:

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. repo
  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를 원래 위치로 리셋하면 됩니다).

또 다른 장점은 동기화가 어느 서버에서 작업하는 것이 아니라 중간 관리자에 의해 실행될 수 있다는 것입니다.클라이언트에 의한 2개의 VPN 간의 저장소 동기화가 이루어졌습니다.

svnadmin 핫카피

svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH

이 하위 명령은 모든 후크, 구성 파일 및 데이터베이스 파일을 포함하여 리포지토리의 전체 "핫" 백업을 만듭니다.

svnbackup over Google Code(으)로 이동합니다.NET 콘솔어플리케이션

  • 를 사용하여 저장소 백업(덤프)을 생성할 수 있습니다.

  • 그런 다음 를 사용하여 Import할 수 있습니다.

SVNBook 상세 참조: "svnadmin을 사용한 저장소 데이터 마이그레이션"

기본적으로 svn 서버가 중지된 경우 저장소 폴더를 복사하는 것이 안전합니다.(출처 : https://groups.google.com/forum/ ?from groups # ! topic / visuals vn / i _ 55khUBRys % 5B1 - 25 % 5D )

따라서 서버를 정지할 수 있는 경우에는 스크립트 또는 백업 도구를 사용하여 저장소를 복사하기만 하면 됩니다.Cobian Backup은 서비스를 자동으로 중지 및 시작할 수 있으며 증분 백업을 수행할 수 있기 때문에 최근에 변경된 저장소 일부만 백업할 수 있습니다(저장소가 크고 원격 위치로 백업할 때 유용합니다).

예:

  1. Cobian 백업 설치
  2. 백업 작업 추가:

    • 소스를 리포지토리 폴더로 설정합니다(예:C:\Repositories\

    • 이벤트 추가 " " ""STOP_SERVICE"Visual SVN Visual SVN,

    • 후 이벤트 추가, " " " " " ,"START_SERVICE"Visual SVN Visual SVN,

    • 필요에 따라서 다른 옵션을 설정합니다.오래된 백업 삭제, 백업 일정, 대상, 압축 포함 아카이브 분할 등의 증분 백업을 설정했습니다.

  3. 이익!

svn 서버를 백업하는 방법에는 주로 두 가지가 있습니다.첫 번째는 저장소 파일의 복사본을 생성하는 핫카피입니다.이 접근방식의 주요 문제는 기본 파일 시스템에 대한 데이터를 저장하기 때문에 이러한 종류의 백업을 다른 svn 서버 종류나 다른 머신에 다시 저장하는 데 어려움이 있을 수 있습니다.덤프라고 불리는 다른 유형의 백업이 있습니다.이 백업에서는 기본 파일 시스템의 정보와 tigiris.org 서브버전에 기반한 모든 종류의 SVN 서버에 저장 가능한 정보가 저장되지 않습니다.

백업 툴에 대해서는 명령 프롬프트에서 svnadmin 툴(핫카피 및 덤프 가능)을 사용할 수 있습니다.이 콘솔은 svn 서버가 있는 디렉토리와 같은 디렉토리에 존재하거나 svn 백업툴을 구글에서 검색할 수 있습니다.

두 종류의 백업을 모두 수행하여 사무실 밖에서 이메일 계정, amazon s3 서비스, ftp 또는 azure 서비스로 가져오면 사무실 밖에서 svn 서버를 호스트하지 않고도 보안이 확보됩니다.

로컬 및 리모트서브버전 저장소의 덤프를 작성하기 위한 GUI Windows 툴은 다음과 같습니다.

https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html

도구 설명에는 다음과 같이 표시됩니다.

이 툴을 사용하면 로컬 및 리모트서브버전 저장소의 덤프 백업을 만들 수 있습니다.소프트웨어는 "svnadmin"과 같은 방법으로 동작하지만 GUI 프런트엔드는 아닙니다.대신 다른 추가 도구 없이 스탠드아론 모드에서 덤프를 생성할 수 있도록 하기 위해 서브버전 라이브러리를 직접 사용합니다.

이게 도움이 되길...

전체 repo 디렉토리를 백업 위치에 복사하기만 하면 됩니다.이렇게 하면, 무슨 일이 생겼을 경우에, 디렉토리를 카피하고, 곧바로 기동할 수 있습니다.

필요한 경우 사용 권한을 유지하십시오.통상, 이것은 Linux 머신에서만 문제가 됩니다.

호스트된 저장소의 경우 svn 버전 1.7 이후 를 사용할 수 있습니다.이것은 다음과 같습니다.svnadmin dump로컬 저장소의 경우.기사에서는 다음과 같은 요점을 설명하고 있습니다.

svnrdump dump /URL/to/remote/repository > myRepository.dump

덤프 파일을 다운로드한 후 로컬로 가져올 수 있습니다.

svnadmin load /path/to/local/repository < myRepository.dump

원하는 호스트에 업로드 할 수도 있습니다.

FSFS 저장소 형식(기본값)을 사용하는 경우 저장소 자체를 복사하여 백업할 수 있습니다.늙은 버클리랑DB 시스템. 저장소는 플랫폼에 의존하지 않으며 일반적으로 svnadmin 덤프를 사용합니다.

백업용 svnbook 매뉴얼 항목에서는svnadmin hotcopy명령어를 사용하면 사용 중인 파일 등의 문제를 처리할 수 있습니다.

@echo off
set hour=%time:~0,2%
if "%hour:~0,1%"==" " set hour=0%time:~1,1%
set folder=%date:~6,4%%date:~3,2%%date:~0,2%%hour%%time:~3,2%

echo Performing Backup
md "\\HOME\Development\Backups\SubVersion\%folder%"

svnadmin dump "C:\Users\Yakyb\Desktop\MainRepositary\Jake" | "C:\Program Files\7-Zip\7z.exe" a "\\HOME\Development\Backups\SubVersion\%folder%\Jake.7z" -sibackupname.svn

이것은 백업을 수행하기 위해 실행 중인 배치 파일입니다.

일일 및 전체 백업 솔루션의 경우 여기에서 SVN 백업 스크립트를 사용하십시오.

프로젝트의 리모트 SVN 저장소를 백업하기 위해 수행한 절차를 정리했습니다.

install svk (http://svk.bestpractical.com/view/SVKWin32)

install svn (http://sourceforge.net/projects/win32svn/files/1.6.16/Setup-Subversion-1.6.16.msi/download)

svk mirror //local <remote repository URL>

svk sync //local

이 작업은 시간이 걸리고 저장소에서 로그를 가져오는 중임을 나타냅니다.됩니다.C:\Documents and Settings\nverma\.svk\local.

이 로컬 저장소를 원격 저장소로부터 최신 변경 사항 세트로 업데이트하려면 이전 명령을 가끔 실행하십시오.

이제 로컬 저장소를 사용할 수 있습니다(/home/user/.svk/local에서는, 의 SVN 「」 「」 「」 「SVN」 「」!

이 접근법의 유일한 문제는 로컬저장소가 리모트저장소의 실제 리비전에 따라 리비전으로 작성된다는 것입니다.누군가 쓴 것처럼:

svk miror 명령어는 방금 작성한 저장소에서 커밋을 생성합니다.따라서 후속 동기화에 의해 작성된 모든 커밋에는 리모트 퍼블릭저장소와 비교하여 리비전 번호가 1씩 증가합니다.

다만, 리모트 저장소의 백업을 몇 개만 수시로 하고 싶다고 생각하고 있었기 때문에, 이 방법은 문제가 없었습니다.

검증:

확인하려면 다음과 같이 로컬저장소에서 SVN 클라이언트를 사용합니다.

svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/"  <local-dir-path-to-checkout-onto>

다음으로 이 명령어는 로컬저장소에서 최신 리비전을 체크 아웃합니다.마지막에 이렇게 써있네요.Checked out revision N.이것.N(상기 문제로 인해) 리모트저장소에서 발견된 실제 리비전보다1개 많았습니다.

svk가 모든 이력을 가져왔는지 확인하기 위해 SVN 체크 아웃은 다양한 오래된 리비전을 사용하여 실행되었습니다.-r2, 10, 50 등이 있습니다.그 후, 에 있는 파일<local-dir-path-to-checkout-onto>그 개정판에서 나온 것으로 확인되었습니다.

마지막에 디렉토리의 zip을 클릭합니다.C:/Documents and Settings\nverma/.svk/local/집도 어딘가에 보관하고요.이것을 규칙적으로 계속하세요.

다른 사람들이 말했듯이, Subversion 팀의 hot-backup.py에는 단순한 기능보다 더 좋은 기능이 몇 가지 있습니다.svnadmin hotcopy

머신의 모든 저장소를 스파이더하는 python 스크립트에서 스케줄링된 작업을 실행하고 핫백업을 사용하여 며칠치 핫복사(손상 방지)와svnadmin svndump리모트 머신에 접속할 수 있습니다.지금까지 복구는 매우 간단합니다.

1.1 SVN(서브버전) 저장소에서 덤프 생성

svnadmin dump /path/to/reponame > /path/to/reponame.dump

실제 예

svnadmin dump /var/www/svn/testrepo > /backups/testrepo.dump

1.2 Gzip으로 작성된 덤프

gzip -9 /path/to/reponame.dump

실제 예

gzip -9 /backups/testrepo.dump

1.3 SVN 덤프 및 Gzip 덤프(원라이너 포함)

svnadmin dump /path/to/reponame | gzip -9 > /path/to/reponame.dump.gz

실제 예

svnadmin dump /var/www/svn/testrepo |Â gzip -9 > /backups/testrepo.dump.gz

Linux에서 SVN(서브버전) 저장소를 백업(덤프) 및 복원(로드)하는 방법.
참조:svn 서브버전 백업 및 복원

언급URL : https://stackoverflow.com/questions/33055/svn-repository-backup-strategies

반응형