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 스크립트를 나타냅니다.
- repo
- SCP 경유로 다른 서버에 복사
- 백업을 가져옵니다.
- 백업에서 테스트 저장소 생성
- 테스트 체크아웃을 하다
- 오류가 있을 경우 전자 메일 보내기(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 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은 서비스를 자동으로 중지 및 시작할 수 있으며 증분 백업을 수행할 수 있기 때문에 최근에 변경된 저장소 일부만 백업할 수 있습니다(저장소가 크고 원격 위치로 백업할 때 유용합니다).
예:
- Cobian 백업 설치
백업 작업 추가:
소스를 리포지토리 폴더로 설정합니다(예:
C:\Repositories\
이벤트 추가 " " "
"STOP_SERVICE"
Visual SVN Visual SVN,후 이벤트 추가, " " " " " ,
"START_SERVICE"
Visual SVN Visual SVN,필요에 따라서 다른 옵션을 설정합니다.오래된 백업 삭제, 백업 일정, 대상, 압축 포함 아카이브 분할 등의 증분 백업을 설정했습니다.
이익!
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 체크 아웃은 다양한 오래된 리비전을 사용하여 실행되었습니다.-r
2, 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
'sourcecode' 카테고리의 다른 글
콘텐츠 파일을 asp.net 프로젝트 파일에 자동으로 포함할 수 있는 방법이 있습니까? (0) | 2023.04.23 |
---|---|
텍스트 또는 ntext 데이터 유형의 REPLACE (0) | 2023.04.23 |
다음 항목을 사용해야 하는 경우:Amazon EC2, Google App Engine, Microsoft Azure 및 Salesforce.com? (0) | 2023.04.23 |
XAML 테두리에 마우스 오버 이벤트/트리거를 설정하는 방법 (0) | 2023.04.18 |
데이터베이스 제약이란 무엇입니까? (0) | 2023.04.18 |