Bitbucket 백업 클라이언트(Backup Client) 사용 가이드
백업 전 준비 사항
마켓 플레이스 에서 사용하고 있는 Server 버전과 호환되는 Bitbucket 서버 백업 클라이언트 다운로드
Bitbucket Server 인스턴스가 있는 서버의 디렉토리에 압축 해제
백업 클라이언트는 플러그인이 아닌 커맨드 라인 툴(cli tool)이기 때문에 인스턴스가 설치되어있는 서버 혹은 Bitbucket 홈 디렉토리에 접근이 가능한 서버에 설치하여 실행 합니다.
백업 수행
다운로드 받은 백업 클라이언트 디렉토리 내의 backup-config.properties 수정
#<bitbucket 홈 디렉토리> 경로
#윈도우일 경우 C:\\path\\to\\folder or C:/path/to/folder
bitbucket.home=/var/Atlassian/application-data/bitbucket
#bitbucket user 이름, 비밀번호
bitbucket.user=admin
bitbucket.password=password
#bitbucket 접근 url
bitbucket.baseUrl=http://localhost:7990/
#백업 클라이언트가 백업 압축파일을 저장할 경로. 작성을 안할경우 <백업 클라이언트 디렉토리>/backups 폴더에 저장
backup.home=
백업 커맨드 실행
java -jar <bitbucket 백업 클라이언트 디렉토리>/bitbucket-backup-client.jar
백업 파일 생성됨(backup-config.properties 에 지정한 backup.home 경로에 tar 파일로 생성)
백업 취소
필요한 경우 실행중인 클라이언트 백업 작업을 취소 할 수 있습니다.
터미널(또는 Windows의 명령 프롬프트)에서 클라이언트가 에코한 백업 토큰(backup started with…로 시작)을 복사
$ ./bitbucket.diy-backup.sh
[http://localhost:7990/bitbucket] INFO: Prepared backup of DB bitbucket in /bitbucket-backup/bitbucket-db/
building file list ... done.
sent 4.17M bytes received 484 bytes 2.78M bytes/sec
total size is 121.12M speedup is 29.06
[http://localhost:7990/bitbucket] INFO: Prepared backup of /bitbucket-home to /bitbucket-backup/bitbucket-home/
[http://localhost:7990/bitbucket] INFO: locked with '7187ae1824ce1ede38a8e7de4bccf58d9a8e1a7a'
[http://localhost:7990/bitbucket] INFO: backup started with '82c73f89e790b27fef3032e81c7071388ae4e371'
[http://localhost:7990/bitbucket] INFO: Waiting for DRAINED state....... done
[http://localhost:7990/bitbucket] INFO: db state 'DRAINED'
[http://localhost:7990/bitbucket] INFO: scm state 'DRAINED'
브라우저에서 Bitbucket Server 인터페이스로 이동. Bitbucket Server는 다음 화면을 표시합니다 :
Cancel backup 버튼을 클릭 하고 복사한 토큰 입력
Cancel backup 버튼 클릭
기존 DB를 이용하여 Bitbucket Server 복원
Bitbucket 설치 중 잘못되었을 때(백업 된 기존 DB를 사용할 수 있는 경우) 수행 가능합니다. 비어있는 홈디렉토리와 비어있는 DB로 복원해야 하기 때문에 미리 홈 디렉토리 및 DB 테이블 삭제가 필요합니다.
Bitbucket 서버 인스턴스 중지
<Bitbucket 홈 디렉토리> 내용 삭제
DB의 모든 테이블 삭제
복원 커맨드를 이용해 Restore Client 수행.
새로운 DB로 Bitbucket Server 복원
새로 작성된 DB로 복원을 수행하려는 경우에 적용됩니다. 복원 프로세스는 데이터베이스에 구애받지 않으므로 백업을 복원하는 데이터베이스가 원래 백업 된 데이터베이스와 다른 구성 또는 유형일 수 있습니다. 복원시 기존 데이터가 실수로 삭제되지 않도록 복원 클라이언트 는 빈 홈 디렉토리와 빈 데이터베이스로만 복원합니다.
Bitbucket Server를 실행하는 계정으로 새로운 비어있는 홈 디렉토리 생성
DB 생성
새 데이터베이스를 작성 했으므로 사용해야하는 JDBC 연결 매개 변수를 지정
복원 커맨드를 이용해 Restore Client 수행
새로운 서버에 새로운 <Bitbucket 홈 디렉토리> 설정
새로 설치한 Bitbucket Server가 실행되면 인스턴스 중지
<Bitbucket 홈 디렉토리> 내부 데이터 삭제
복구해놓은 Bitbucket 홈 디렉토리의 내용을 새로운 <Bitbucket 홈 디렉토리>에 복사
Bitbucket 실행
backup-config.properties 구성 옵션
백업 시
bitbucket.home
백업 또는 복원하려는 Bitbucket Server 인스턴스의 홈 디렉토리 위치를 정의합니다. 필수
bitbucket.user
백업을 수행하려는 관리 권한이있는 Bitbucket Server 사용자의 사용자 이름을 정의합니다. 필수
bitbucket.password
백업을 수행하려는 Bitbucket Server 관리자의 비밀번호를 정의합니다. 필수
bitbucket.baseUrl
백업하려는 Bitbucket Server 인스턴스의 기본 URL을 정의합니다. 필수
backup.home
백업 클라이언트가 백업 아카이브와 같은 자체 파일을 저장할 위치를 정의합니다.
지정하지 않으면이 파일은 백업 클라이언트의 작업 디렉토리 아래에 저장됩니다. 백업 파일은 backup
하위 디렉토리에 저장 되고 로그는 logs
하위 디렉토리에 저장됩니다 .
복원 시
bitbucket.home
복원 클라이언트가 Bitbucket Server 홈 데이터로 채울 디렉토리의 전체 경로입니다. 이 디렉토리는 비어 있어야합니다.
Windows에서는 경로를 구분하기 위해 두 개의 백 슬래시 ( \\
) 또는 단일 슬래시 ( )를 사용해야 /
합니다.
jdbc.override
기본적으로 복원 클라이언트는 백업된 데이터베이스로 복원됩니다. jdbc.override가 true로 설정된 경우 복원 클라이언트는 아래의 jdbc 속성으로 지정된 데이터베이스로 복원됩니다. 데이터베이스는 비어 있어야 합니다.
jdbc.driver
Bitbucket Server가 새 데이터베이스에 로그인하는데 사용해야하는 드라이버 클래스입니다.
jdbc.url
JDBC URL로 형식화된 새 데이터베이스의 연결 세부 사항 입니다.
jdbc.user
Bitbucket Server가 새 데이터베이스에 로그인하는데 사용해야하는 사용자 이름입니다.
jdbc.password
Bitbucket Server가 새 데이터베이스에 로그인하는데 사용해야하는 사용자의 비밀번호 입니다.
JDBC properties 사용 예시
jdbc.driver
와 jdbc.url
속성은 다음과 같습니다.
Database | jdbc.driver | jdbc.url |
---|---|---|
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://HOSTNAME:PORT/DATABASE?autoReconnect=true&characterEncoding=utf8&useUnicode=true&sessionVariables=storage_engine%3DInnoDB |
Oracle | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:@//HOSTNAME:PORT/SERVICE |
PostgreSQL | org.postgresql.Driver | jdbc:postgresql://HOSTNAME:PORT/DATABASE |
SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver | jdbc:sqlserver://HOSTNAME:PORT;databaseName=DATABASE; |