-
[깃랩설치형서버] 크론탭으로 자동 백업 설정하기홈서버 2022. 8. 30. 12:19반응형
깃랩은 프로젝트 생성 시 깃 레파지토리 2개를 생성한다.
root@git:/var/opt/gitlab/git-data/repositories/@hashed/6b/86# ll
total 16
drwxr-s--- 4 git git 4096 Jan 5 2022 ./
drwxr-s--- 3 git git 4096 Jan 5 2022 ../
drwx--S--- 5 git git 4096 Aug 29 12:00 6b86b273ff34fce19d6b804effada4eaa22f1d49c01e52ddb7875b4b.git/
drwx--S--- 5 git git 4096 Aug 29 12:00 6b86b273ff34fce19d6b804effada4eaa22f1d49c01e52ddb7875b4b.wiki.git/
root@git:/var/opt/gitlab/git-data/repositories/@hashed/6b/86#하나는 소스 코드 레파지토리, 또 하나는 깃랩에서 제공하는 위키라는 페이지의 레파지토리다. 위키도 깃 레파지토리로 구성되어 있어 형상관리를 한다. 그래서 깃 레파지토리만 따로 클론 하거나 복구할 때 /var/opt/gitlab/git-data/repositories 디렉터리를 이용하기도 한다. 물론 위의 파란색 글씨처럼 깃랩에서 생성한 레파지토리기 때문에 알 수 없는 명명규칙으로 깃 레파지토리를 생성한다.
깃랩 설치형 모듈은 백업을 제공해주고 있다. 이를 이용해야 깃 레파지토리는 물론이고, 이슈 및 머지리퀘스트 같은 DB 데이터도 같이 백업이 된다. 필자는 편의상 root 계정을 활용하였다.
공식문서에선 12.1 이전버전과 12.2 이후 버전의 명령어가 다른다. 필자의 버전은 gitlab-ce v.14.6.1이기 때문에 다음 명령어를 사용하였다.
root@git:/opt/gitlab/bin# ll
total 40
drwxr-xr-x 2 root root 4096 Aug 22 17:01 ./
drwxr-xr-x 11 root root 4096 Jan 5 2022 ../
-rwxr-xr-x 1 root root 3679 Jan 5 2022 gitlab-backup*
-rwxr-xr-x 1 root root 1418 Jan 5 2022 gitlab-ctl*
-rwxr-xr-x 1 root root 250 Jan 5 2022 gitlab-healthcheck*
-rwxr-xr-x 1 root root 702 Jan 5 2022 gitlab-psql*
-rwxr-xr-x 1 root root 1288 Jan 5 2022 gitlab-rails*
-rwxr-xr-x 1 root root 1287 Jan 5 2022 gitlab-rake*
-rwxr-xr-x 1 root root 724 Jan 5 2022 gitlab-redis-cli*
-rwxr-xr-x 1 root root 1287 Jan 5 2022 gitlab-ruby*
root@git:/opt/gitlab/bin# /opt/gitlab/bin/gitlab-backup create이 후 백업이 정상적으로 진행되었다면 /var/opt/gitlab/backups 경로에 아래와 같이 파일이 생성될 것이다.
root@git:/var/opt/gitlab/backups# ll
total 5108480
drwx------ 2 git root 12288 Aug 30 11:08 ./
drwxr-xr-x 21 root root 4096 Jun 27 16:28 ../
-rw------- 1 git git 5231063040 Aug 30 11:08 1661825215_2022_08_30_14.6.1_gitlab_backup.tar생성된 이 tar 파일로 필요시 복구를 진행하면 된다. 필자는 다른 디스크에 백업하기 위해 scp 명령어를 사용하여 다른 서버에 해당 파일을 전송하였다.
root@git:/var/opt/gitlab/backups# scp 1661825215_2022_08_30_14.6.1_gitlab_backup.tar root@xxx.xxx.xxx.xxx:/var/opt/gitlab/backups/ 비밀번호 입력 없이 key 접근을 위해 대상 서버 ~/.ssh/authorized_keys 파일에 전송 서버의 ssh-rsa 키도 등록해 놓았다.
scp 명령어로 파일 전송 후 대상 서버 /var/opt/gitlab/backups 디렉터리에 파일이 존재하는지 확인하였다.
이 작업의 자동화를 위해 crontab에 등록하는 작업을 하겠다. 다음 명령어로 crontab을 수정한다.
root@git:~# crontab -e 0 2 * * * /opt/gitlab/bin/gitlab-backup create
0 3 * * * find /var/opt/gitlab/backups -type f -name '*gitlab_backup.tar' -ctime 0 -exec scp {} root@xxx.xxx.xxx.xxx:/var/opt/gitlab/backups/ \;
30 3 * * * find /var/opt/gitlab/backups -type f -name '*gitlab_backup.tar' -ctime +10 -exec rm {} \;매일 2시 /opt/gitlab/bin/gitlab-backup create 명령어로 gitlab_backup.tar 파일을 만든다.
매일 3시 /var/opt/gitlab/backups 디렉토리에 당일 생성된 gitlab_backup.tar 파일을 찾아 scp로 대상 서버에 전송한다.
매일 3시 30분 ctime 기준으로 10일 이후의 파일들은 삭제한다.
위 내용을 기입 후 저장으로 나온다.
root@git:~# /etc/init.d/cron restart 크론탭을 재시작하면 작업이 완료된다. 한 가지 주의할 점은 백업 시 레파지토리 이상(파일 깨짐 등등)으로 진행되지 않을 경우가 있다. 문제는 그 레파지토리만 건너뛰는 것이 아니라 모든 레파지토리의 백업이 중단된다. 꾸준한 모니터링은 필요하다.
반응형'홈서버' 카테고리의 다른 글
[홈서버] 시놀로지 포토 외부 접속 설정 하기 (0) 2022.12.16 [홈서버] 특정 파일 주기적 SCP 전송 (명령어 find, scp) (0) 2022.01.07 [홈서버] 우분투에서 CIFS(SMB) 마운트 (0) 2021.12.29 우분투 SMB mount error(2): No such file or directory 오류 (0) 2021.12.29 [홈서버] 디바이스, 기가바이트 브릭스 GB-BLCE-4105 (0) 2020.09.14