SVN 백업/복구, 증분백업/복구

1. 덤프 받기

1.1. 전체 덤프 받기

svnadmin dump /var/www/svn/reposA/  > ~/reposA.svn_dump

전체 저장소를 덤프 받습니다.

1.2. 지정 덤프 받기

svnadmin dump /var/www/svn/reposA/ -r 10  > ~/reposA.svn_dump

리비전 10만 덤프 받습니다.

1.3. 구간 덤프 받기

svnadmin dump /var/www/svn/reposA/ -r 10:20  > ~/reposA.svn_dump

리비전 10에서 20까지 덤프를 받습니다.

1.4. 특정 폴더 덤프 받기

svnadmin dump /var/www/svn/reposA/ | svndumpfilter include WORK > ~/reposA.svn_dump

저장소에서 WORK 폴더만 덤프를 받습니다.

1.5. 특정 폴더를 제외 하고덤프 받기

svnadmin dump /var/www/svn/reposA/ | svndumpfilter exclude TEMP > ~/reposA.svn_dump

저장소에서 TEMP 폴더만 제외하고 덤프를 받습니다.

1.6. 특정 날짜부터 현재까지 덤프 받기

svnadmin dump /var/www/svn/reposA/ -r {2014-01-20}:HEAD > ~/reposA.svn_dump

저장소에서 TEMP 폴더만 제외하고 덤프를 받습니다.

1.7. 증분 덤프 받기

svnadmin dump /var/www/svn/reposA/ -r 0:1000  > ~/repos-0-1000.svn_dump
svnadmin dump /var/www/svn/reposA/ -r 1000:2000 --incremental > ~/repos-1000-2000.svn_dump
svnadmin dump /var/www/svn/reposA/ -r 2000:3000 --incremental > ~/repos-2000-3000.svn_dump

구간별로 증분이 가능 하도록 덤프를 받습니다. load시 증분해서 복원이 가능 함.

1.8. 백업하면서 압축하기

svnadmin dump /var/www/svn/reposA/  | gzip -9 > ~/reposA.svn_dump.gz

1.9. 압축 한거 풀기

gunzip ~/reposA.svn_dump.gz

2. 덤프 복원하기

덤프를 복원하기 위해서는 기존의 저장소나 빈 저장소가 있어야 합니다.

svnadmin --help create 를 참고 하세요.

2.1. 복원하기

svnadmin load /path/to/repo < ~/reposA.svn_dump

repo라는 저장소에 덤프 파일을 복원 합니다.

2.2. 증분 덤프 복원하기

svnadmin load  /path/to/repo < ~/repos-0-1000.svn_dump
svnadmin load  /path/to/repo < ~/repos-1000-2000.svn_dump
svnadmin load  /path/to/repo < ~/repos-2000-3000.svn_dump

이전에 증분했던 순서대로 다시 차례대로 넣어 주면 됩니다.

2.3. 원격에서 덤프 하기

svnrdump 은 원격에서 덤프를 할수 있습니다. 사용법은 동일합니다.

그러나 원격인 만큼 네트워크에 문제가 발생할수 있으니 적당한 크기로 잘라서 덤프하는게 좋습니다.

repo=$1

# 언어 환경에 따라 수정 필요
HEAD=`svn info https://devops.ssfshop.com/svn/cnp | grep 리비전 | grep -v 마지막 | awk '{print $2}'`
repoSymbol=`basename $repo`
rev=0
while true; do
    next=$((rev + 9999))
    if [[ $next -gt $HEAD ]]; then
        next=$HEAD
    fi
    #echo "$rev to $next"
    r=$(printf "%06d" $rev)

    echo "svnrdump dump $repo -r${rev}:${next}  --incremental > ${repoSymbol}_${r}_${next}.dump"
    svnrdump dump $repo -r${rev}:${next}  --incremental  > ${repoSymbol}_${r}_${next}.dump
    rev=$((rev + 10000))
    if [[ $rev -gt $HEAD ]]; then
        break
    fi

done
Tags: svn   backup   restore