SVN 저장소를 다른 SVN 저장소로 마이그레이션하려면 어떻게합니까?
모든 기록을 복사하여 한 저장소에서 다른 저장소로 디렉토리를 복사하는 간단한 방법이 있습니까?
가장 간단한 방법은 다음을 사용하는 것입니다.
svnadmin dump path/to/repos > repos.out
이렇게하면 파일에 저장소 (기록 포함)에 대한 이식 가능한 형식이 생성됩니다 repos.out
. 그런 다음 사용할 수 있습니다.
svnadmin load path/to/newrepos < repos.out
'덤프 된'저장소를 신규 또는 기존 저장소로로드합니다.
5 장. 리포지토리 유지 관리-> 리포지토리 데이터 마이그레이션 다른 곳에서는svnadmin dump
버전 1.7부터 사용에 대한 다음 참고 사항이 있습니다 .
Subversion 저장소 덤프 형식은 버전이 지정된 저장소 변경 사항 만 설명합니다. 커밋되지 않은 트랜잭션, 파일 시스템 경로에 대한 사용자 잠금, 저장소 또는 서버 구성 사용자 지정 (후크 스크립트 포함) 등에 대한 정보는 전달하지 않습니다.
Subversion 책 에서 제안한대로 :
svnadmin dump path/to/repos_src \
| svndumpfilter include path/inside/svn/to/directory \
| svnadmin load path/to/repos_dst
예를 들어 :
svnadmin dump /var/lib/svn/old_repo \
| svndumpfilter include trunk/my_project/common_dir \
| svnadmin load /var/lib/svn/new_repo
기록을 원하지 않는 경우 svn export
폴더없이 깨끗한 폴더를 .svn
가져온 다음 svn import
다른 저장소로 가져올 수 있습니다 .
히스토리가 있으면 svnadmin dump
. 그런 다음 svndumpfilter
을 사용하기 전에 사용하려는 부품 또는 경로 만 필터링하는 데를 사용 svnadmin load
합니다.
읽을 주제 :
svnsync
— Subversion Repository Mirroring 명령을 사용합니다 .
svnsync
Subversion 원격 저장소 미러링 도구입니다. 간단히 말해, 한 저장소의 개정을 다른 저장소로 재생할 수 있습니다.
svnsync
명령에 대한 Subversion 문서 에는 다음과 같은 경고 (버전 1.7 기준)가 있습니다. 이는 다른 SVN 명령을 사용하여 미러 저장소를 수정하면 svnsync
해당 특정 미러에서 다시 사용해서는 안된다는 의미입니다.
svnsync
미러링 작업의 일부로 만들어지지 않은 미러 저장소의 변경 사항에 매우 민감합니다. 이를 방지하려면 해당svnsync
프로세스가 미러 저장소를 수정할 수있는 유일한 프로세스 인 경우가 가장 좋습니다 .
Subversion 버전 1.7에는 svnrdump
원격 저장소에 액세스하고 svnadmin dump
명령에 의해 생성 된 것과 동일한 덤프 형식 출력을 생성하는 데 사용할 수 있는 새 명령 이 있습니다 . 이를 통해 svnrdump
with 를 사용 svnadmin load
하여 Subversion 저장소를 전송할 수 있습니다 .
새 명령에 대한 설명이있는 svnrdump— 원격 Subversion 저장소 데이터 마이그레이션 을 참조하십시오 .
레드 북의 5 장에서 다른 곳에서 리포지토리 데이터 마이그레이션svnrdump
섹션 에는 다음을 언급하는 리포지토리 데이터 마이그레이션 하위 섹션이 있습니다 .
[
svnrdump
와svnadmin dump
] 의 주요 차이점 은 저장소에 대한 직접 액세스를 요구하는 대신svnrdump
Subversion 클라이언트와 동일한 RA (Repository Access) 프로토콜을 사용하여 원격으로 작동한다는 것입니다. 따라서 인증 자격 증명을 제공해야 할 수 있습니다. 또한 원격 상호 작용 [원문]은 Subversion 서버에 구성된 모든 권한 제한의 적용을받습니다.
또한 svnadmin dump
후크와 같은 서버 구성 사용자 정의와 관련된 제한 사항 이 전송되지 않을 수 있다고 가정합니다 svnrdump
.
를 사용하여 덤프 파일을 생성 한 다음를 사용하여 svnadmin dump
새 저장소로 가져올 수 있습니다 svnadmin load
.
나는 그것을 활용하여 생성 된 덤프 파일을 명시해야한다고 생각한다.
svnadmin dump path/to/repos > dumpfile
명령을 사용하여 (svn 1.7 이상에서) 만들 수 있습니다.
svnrdump dump url_to_repos > dumpfile
이것은 서버가 아닌 원격 컴퓨터에서 수행 할 때 유용합니다.
이것이 다른 사람들에게 도움이되는 경우 한 Subversion 저장소에서 다른 저장소로 변경 세트를 재생하는 svn2svn이 있습니다.
https://github.com/tonyduckles/svn2svn
한 서버에서 다른 버전으로 저장소를 마이그레이션하려면 다음 단계를 따라야합니다.
1 단계 : 모든 저장소 버전을 덤프 파일로 덤프합니다. 기존 저장소에 수천 개의 버전이있을 수 있습니다. 따라서 다음 스크립트를 사용하여 덤프 파일을 만들 수 있습니다.
dump.sh
# Here “i” is the version starting number, and “j” is the maximum version number of your existing #repository.
j=4999;
for ((i=0;i<=$j;i++));
do
# your-unix-command-here
echo $i
svnadmin dump <old_server_repository_location > -r $i –incremental > <dump_location>/$i.dump
done
위의 스크립트에서 공간 가용성에 따라 이전 저장소의 전체 덤프를 얻거나 짧은 간격 (예 : 0-5000에서 5001-10000 등)으로 덤프를 가져올 수 있습니다.
2 단계 : 아래 명령을 사용하여 위 스크립트를 실행합니다. 커널 버전에 따라 아래 두 가지 쿼리 중 하나를 실행해야합니다.
$ bash dump.sh > stdout.sh
$ ./sh dump.sh > stdout.sh
위의 명령을 사용하여 실행해야하는 모든 명령을 stdout.sh 파일에 기록합니다. 나중에 참조 할 수 있도록이 파일을 추적 할 수 있습니다.
3 단계 : 이전 서버와 새 서버 사이의 포트 번호 22에 대해 방화벽이 열려 있는지 확인합니다. 열려 있지 않으면 관리자에게 요청하여 사용할 수 있도록하십시오.
4 단계 : 이제 아래 명령을 사용하여 이전 SVN 저장소에서 생성 된 모든 덤프 파일을 새 서버에 복사합니다.
$ sftp xxxx@<new_server>
Connecting to <new_server>…
Password:
sftp> mput *.dump <new_server>/dump_location
위의 명령에서는 xxxx
작업을 수행하는 사용자입니다. sftp를 수행하는 과정에서 이전 서버의 덤프 파일을 새 서버로 복사합니다.
5 단계 : 새 서버에 대한 새 리포지토리 만들기
$ svnadmin create <new_repository>
6 단계 : 이제 아래 스크립트를 사용하여 모든 덤프 파일을로드합니다.
load.sh
# Here “i” is the version starting number, and “j” is the maximum version number of your existing #repository.
j=4999;
for ((i=0;i<=$j;i++));
do
# your-unix-command-here
echo $i
svnadmin load –bypass-prop-validation <new_repository> < dump_location /$i.dump
done
위의 6 가지 간단한 단계를 따르면 기존 저장소를 새 저장소로 마이그레이션 할 수 있습니다. 이 프로세스를 통해 기존 저장소의 손상된 개정에 대해 걱정할 필요가 없습니다.
'programing' 카테고리의 다른 글
AWS Lambda API 게이트웨이 오류 "잘못된 Lambda 프록시 응답" (0) | 2020.12.10 |
---|---|
JAVA_HOME이 잘못된 디렉토리로 설정되었습니다. (0) | 2020.12.10 |
PHP 문자열에서 제어 문자 제거 (0) | 2020.12.10 |
PHP에서 동적 정적 메서드 호출? (0) | 2020.12.10 |
보이는 테이블 행 수를 계산하는 jquery 선택기? (0) | 2020.12.10 |