# svnadmin create Proj (백업할 repository를 생성)
# echo "#!bin/sh" > Proj/hooks/pre-revprop-change (pre-revprop-change 파일을 생성)
# echo "return 0" >> Proj/hooks/pre-revprop-change
# chmod +x Proj/hooks/pre-revprop-change
# (authz 파일을 적당히 수정, 및 필요하다면 svnserve를 띄우거나 apache 설정에 reposity를 추가)
# chown -R apache:apache Proj (반드시 해줘야 할 퍼미션 설정)
# chcon -R -h -u system_u -t httpd_sys_content_t Proj (반드시 해줘야 할 퍼미션 설정2)
# svnsync init http://backup_server_addr/Proj http://svn_server_addr/Proj (svnsync 정보를 초기화. --source-username, --source-passwd, --sync-username, --sync-password를 넣는 편이 정신건강에 좋음)
# svnsync sync http://backup_server_addr/Proj (sync. 역시나 --source-username, --source-passwd, --sync-username, --sync-password를 넣는 편이 정신건강에 좋음.)
백업할 서버에도 subverison을 다 깔아놓고, 백업할 repository도 설정. 백업하는데.. 어라. 일부 원본 repository는 손상되어 있다. 뭐 워낙 옛날에 (알지도 못하던 사람들이;) 쓰던 것들이니 그냥 백업되는데 까지만 백업해두고 보류.
그러다가 보면 이런 오류 메시지도 볼 수 있다.
Failed to get lock on destination repos, currently held by '...'
Failed to get lock on destination repos, currently held by '...'
Failed to get lock on destination repos, currently held by '...'
Failed to get lock on destination repos, currently held by '...'
...
svnsync: Couldn't get lock on destination repos after 10 attempts
락이 걸린것 같은데, svnadmin lslocks에도 나오는 것이 없다. svnadmin 명령으로는 어떤 문제던 해결이 안된다. 망할;
일단 svnsync를 해결했으니, 백업 쉘을 만들고 크론에다 등록. (원본 서버 중 한놈은 linux에 svnserve로 동작하고, 한놈은 windows상에서 VirtualSVN을 통한 SSL로 동작한다. 백업 서버는 linux에 apache를 통한 일반 HTTP-DAV로 동작하고.)
안된다; 분명 루트쉘에서 실행했을때는 무리 없이 동작했는데, 유독 크론에다 넣으면 이런 오류가 뜬다.
svn: OPTIONS of 'https://svn_server_addr/svn/Proj': Server certificate verification failed: certificate has expired, issuer is not trusted (https://...)
분명 SSL 관련 인증서 오류인것 같은데, 내가 그럴까봐 trust-server-cert 명령도 넣었구만 안된다. /root 아래 원하는 파일들이 있을텐데, 못찾는것 보면 경로 문제인것 같기도 하다. 그러다가 /etc/crontab에 HOME=/ 구문을 발견했다. 이게 문제가 아닐까. 그래서 sync_run.sh에 HOME=/root 을 추가.
어쨌든 된다. 이것 가지고 해결한게 맞는지도 모르겠다. (이것저것 기억나지 않게 손댄게 좀 있어서;) 그냥 잘 되니까 그러려니.
sync 받은 디렉토리에 압축 백업 스크립트를 걸어놓고, 이젠 진짜 끝. 더 이상 svn을 만질 일이 없기를. (peace!)