본문 바로가기
Database/Server

[Linux] Crontab 태블로 백업 스케줄 설정

by 5ole 2024. 3. 15.

 

태블로 대시보드를 개발해 게시, 관리, 운영하는 경우에 주로 태블로 서버라는 것을 사용합니다.서버가 정상적으로 운영되어야 만든 대시보드를 게시할 수 있기에 서버를 잘 관리하고 확인하는 것 또한 태블로 개발자에게는 필수적인데요.  

얼마 전에 새로 시작한 프로젝트가 있어 서버의 디스크 용량, 메모리 확인, 그리고 백업은 잘 되고 있는지 확인을 해보았습니다. 

서버는 Linux - 우분투이며 한 달 전에 담당자가 서버 업그레이드를 진행했는데 확인해보니 그 과정에서 자동으로 백업이 실행될 수 있도록 걸어둔 스크립트가 사라진 상태임을 확인했습니다. 한 달동안 서버 백업이 안되고 있던 건데, 그래서 급하게 백업 스케줄을 거는 크론탭 명령어를 작성하게 되었습니다. 

 

 

1. 크론탭 Crontab

 

 

먼저 크론탭이란 리눅스에서 주기적으로 실행되는 작업을 예약하기 위한 시스템 프로그램입니다. 명령어를 직접 입력하거나 작성한 스크립트 파일이 예약한 시간에 실행되도록 걸어두는 건데요. 

 

ChatGPT가 설명하는 크론탭

 

 

먼저 크론탭을 걸기 위해서 알아두어야 할 명령어입니다.

# 크론탭 편집

crontab -e

 

# 크론탭 확인

crontab -l

 

# 크론탭을 vi 에디터로 수정 작성하는 법

export VISUAL=vi; crontab -e

 

 

 

매일 오전 2시에 backup 스크립트를 실행하는 예시 크론탭 구문은 다음과 같습니다. 

0 2 * * * /home/user/backup.sh

 

 

이렇게 크론탭 구문 작성할 때는 별(*) 다섯개가 들어갑니다. 예약시간을 거는 건데 각 별의 의미는 다음과 같습니다. 

 

* * * * *

1번 * : 분 (0~59)
2번 * : 시간(0~23) 
3번 * : 일 (1~31) 
4번 * : 월 (1~12)
5번 * : 요일 (0~7)  - 0,7 : 일 / 1 : 월 / 2: 화 / 3 : 수 / 4 : 목 / 5 : 금 / 6 : 토

 

 

해당 크론탭을 실행한 후의 처리 내역에 대한 로그도 남겨두어야겠죠? 이번 태블로 백업이 돌지 않은 이유를 알아볼 때 크론탭 로그를 찾아보니 스크립트를 삭제해 백업파일이 생성되지 않았음을 확인할 수 있었습니다. 

 

크론탭 뒤에 >나 >>를 붙여 log 파일에 갱신을 하거나 추가하여 누적되도록 할 수 있습니다. 

# > 덮어쓰기, 갱신
 0 2 * * * /home/user/backup.sh > /home/tabadmin/backup_scripts/cronlog 2>&1
 
# > > 누적
0 2 * * * /home/user/backup.sh >> /home/tabadmin/backup_scripts/cronlog 2>&1

 

2>&1는 오류를 표준 출력으로 만들어 오류도 로그 파일에 기록하도록 하는 구문입니다.

 

 

 

2. 태블로 백업 구문


태블로 백업 파일을 생성하면 자동으로 저장되는 경로는 다음과 같습니다.

/var/opt/tableau/tableau_server/data/tabsvc/files/backups/

 

cd /var/opt/tableau/tableau_server/data/tabsvc/files/backups/

 

 

먼저 태블로 백업 전에 용량을 줄이기 위해 하루가 지난 임시 파일, 임시 로그 파일을 정리하는 명령어를 수행합니다. 

 

tsm maintenance cleanup

 

 

그리고 태블로 서버를 백업 명령어는 다음과 같습니다.

해당 구문은 < ts_backup_오늘날짜.tsbak > 파일로 떨어지도록 설정됩니다.

 

tsm maintenance backup -f ts_backup -d

 

 

+ cleanup과 backup 관련한 구체적인 옵션은 아래 링크에서 확인할 수 있습니다.

 

https://help.tableau.com/current/server/ko-kr/cli_maintenance_tsm.htm#cleanup

 

tsm maintenance

tsm maintenance 명령을 사용하여 백업을 만들거나 이전에 만든 백업에서 Tableau Server를 복원하는 등, 서버 유지 관리 작업을 수행할 수 있습니다

help.tableau.com

 

3. 크론탭으로 태블로 서버 백업 실행

 

제가 실행하고자 하는 크론탭 조건은 아래와 같습니다.

 

  1. 매일 밤 자정에 tsm cleanup으로 서버 용량 정리
  2. 매일 새벽 1시에 backup 파일이 생성
  3. 백업 파일은 최근일자로 총 3개가 유지되도록 함
  4. cleanup과 backup 로그는/home/tabadmin/backup_scripts 폴더의 cronlog에 누적해서 남도록 함

 

그렇게 전체적으로 크론탭에 거는 구문은 아래와 같게 됩니다.

0 0 * * * /opt/tableau/tableau_server/packages/customer-bin.20231.24.0202.0949/tsm maintenance cleanup -a --log-files-retention 7 
>> /home/tabadmin/backup_scripts/cronlog 2>&1
0 1 * * * find /var/opt/tableau/tableau_server/data/tabsvc/files/backups -name '*.tsbak' -mtime +1 -delete 
&& /opt/tableau/tableau_server/packages/customer-bin.20231.24.0202.0949/tsm maintenance backup -f ts_backup -d 
>> /home/tabadmin/backup_scripts/cronlog 2>&1

 

 

&& 조건은 delete 명령어가 성공적으로 실행되면 뒤의 명령어인 백업이 실행되도록 걸어주는 연산자입니다. 만약 삭제되지 않는다면 백업 명령어는 실행되지 않습니다.

 

 


 

서버가 Linux일 때 태블로 서버 백업이 자동으로 수행되도록 크론탭으로 걸어주어야 한다는 걸 알기는 했지만 직접 해본 건 처음이었습니다. 이렇게 동작 방법을 알게 되었으니 덕분에 다음에는 당황하지 않고 직접 커스터마이징하며 짜볼 수 있을 것 같습니다.

 

 

'Database > Server' 카테고리의 다른 글

Tableau SSO 인증(SAML)  (0) 2022.12.05
Tableau HA Server  (0) 2022.11.07
[Tableau] refresh-environment-variables.txt  (0) 2022.09.19
[Tableau] Tableau-server-obliterate.txt  (1) 2022.09.19
Tableau Server Port  (0) 2022.02.17

댓글