kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

Docker

gogs docker 백업 및 복원하기(작성중)

까마기 2020. 1. 9. 15:08
728x90
반응형

1. 백업하기 

$ sudo docker exec gogs /bin/bash -c "export USER=git && cd /app/gogs && ./gogs backup" 

  1.1. 백업파일 확인하기 

 

- 도커 이미지로 접속 
$ sudo docker exec -i -t gogs bash 


- 백업파일이 저장된 경로로 이동한다. 

# cd /app/gogs 

- 백업파일이 생성되었는지 확인한다. 

2. 복구하기 

  2.1. DB 복구하기 
   - "--database-only" 옵션이 없으면 오류가 발생하여 일단 DB만 복구하고 git data는 별도로 복구한다. 

$ sudo docker exec gogs2 /bin/bash -c "export USER=git && cd /app/gogs && ./gogs restore --database-only --from /data/gogs/gogs-backup-20180227065816.zip

 

2018/02/27 07:53:48 [ INFO] Restore backup from: /data/gogs/gogs-backup-20180227065816.zip 

2018/02/27 07:53:49 [ INFO] Restore succeed! 

* 간편 복구
1) gogs 백업파일을 gogs docker container에 복사

2) gogs docker에 터미널 접속

3) /app/gogs/ 경로로 이동

4) 스위치 유저 root -> git

5) gogs restore

* gogs 설정파일 위치

/data/gogs/conf/app.ini

 


  2.2. git 복구하기. 
   - backup받은 zip파일의 압축 풀면 repositories.zip이라는 파일이 있다. 
   - repositories.zip 의 파일을 다시 압축을 풀면 "gogs-repositories"라는 디렉토리가 존재한다. 
     내부에 git history데이터를 가지고 있으며, 이 디렉토리를 gogs의 git data 위치로 복사해야 한다. 
   - volume마운트를 하지 않았을 경우 docker내부로 sftp로 파일을 전송하고,  
     "gogs-repositories" 디렉토리를 "/data/git/"로 복사한다. 
   - volume을 마운트 했을 경우 마운트한 경로의 git디렉토리에 "gogs-repositories" 디렉토리를 복사한다. 
   - 디렉토리를 복사 후 권한에따라 오류가 발생할수 있기 때문에 권한이나 소유자 설정에 유의해야 한다. 

반응형