[자동화] 귀찮은 일은 서버가: 크론탭(Crontab) 활용한 정기 백업 자동화
안녕하세요! 지난 9편에서 넷데이터(Netdata)로 서버의 건강 상태를 실시간으로 확인하는 법을 배웠습니다. 하지만 아무리 건강 관리를 잘해도 예상치 못한 사고는 일어날 수 있습니다. 하드디스크의 물리적 고장, 실수로 내린 삭제 명령어 한 줄, 혹은 갑작스러운 해킹 공격까지. 이때 우리를 구원할 유일한 생명줄은 바로 '백업(Backup)'입니다.
문제는 백업이 무척 귀찮다는 점입니다. "내일 해야지" 하다가 사고가 터지면 모든 데이터는 한 줌의 먼지가 됩니다. 오늘은 리눅스의 강력한 스케줄러인 크론탭(Crontab)을 활용해, 우리가 잠든 사이에도 서버가 스스로 데이터를 백업하고 정리하게 만드는 자동화 시스템을 구축해 보겠습니다.
1. 크론탭(Crontab)이란? 서버의 알람 시계
크론탭은 리눅스 시스템에서 특정 시간에 특정 명령어를 실행하도록 예약하는 도구입니다. 24시간 켜져 있는 홈서버의 장점을 100% 활용할 수 있는 기능이죠.
크론탭의 설정 형식은 5개의 별(* * * * *)로 이루어져 있습니다. 각각 [분] [시] [일] [월] [요일]을 의미합니다. 예를 들어 0 3 * * *라고 설정하면 매일 새벽 3시 정각에 명령어가 실행됩니다. 사람이 가장 깊게 잠든 시간, 우리 서버는 가장 바쁘게 일하게 되는 셈입니다.
2. 무엇을 백업해야 하는가? (백업 전략)
모든 데이터를 백업하면 용량이 부족해집니다. 우리는 딱 두 가지만 챙깁니다.
- 설정 파일(Docker YAML 등): 서비스 구성 정보가 담긴 파일들입니다. 용량은 작지만 없으면 복구가 불가능합니다.
- 데이터베이스(DB) 덤프: 넥스트클라우드나 워드프레스에 저장된 실제 텍스트 데이터들입니다.
- 사용자 파일: 사진, 영상 등 실제 바이너리 데이터입니다. (이것은 용량이 크므로 별도의 증분 백업 전략이 필요합니다.)
3. 실전: 백업 스크립트 작성 및 자동화
단순 명령어가 아니라, 날짜별로 압축 파일을 만들어 관리하는 스마트한 스크립트를 만들어 보겠습니다.
[1단계: 백업 스크립트 파일 생성]
mkdir -p ~/scripts && nano ~/scripts/backup.sh
[2단계: 스크립트 내용 작성]
아래 내용을 복사해서 붙여넣으세요. (경로는 본인 환경에 맞게 수정하세요.)
#!/bin/bash
# 설정 변수
BACKUP_DIR="/home/user/backups"
SOURCE_DIR="/home/user/nextcloud"
DATE=$(date +%Y-%m-%d)
# 백업 폴더 생성
mkdir -p $BACKUP_DIR
# 1. 도커 데이터 압축 백업
tar -czvf $BACKUP_DIR/nextcloud_backup_$DATE.tar.gz $SOURCE_DIR
# 2. 오래된 백업 삭제 (7일 지난 파일만)
find $BACKUP_DIR -type f -mtime +7 -delete
echo "백업 완료: $DATE"
팁: chmod +x ~/scripts/backup.sh 명령어로 실행 권한을 주는 것을 잊지 마세요!
[3단계: 크론탭에 등록하기]
crontab -e
파일 가장 아래에 다음 줄을 추가합니다. 매일 새벽 4시에 백업을 수행한다는 의미입니다.
0 4 * * * /home/user/scripts/backup.sh >> /home/user/scripts/backup.log 2>&1
4. 백업의 완성: '3-2-1 법칙'
진정한 서버 전문가라면 '3-2-1 백업 법칙'을 따릅니다.
- 3개의 데이터 복사본: 원본 1개와 백업본 2개를 유지합니다.
- 2개의 다른 매체: 서버 하드디스크 외에 외장 하드나 USB에 따로 저장합니다.
- 1개의 오프사이트 보관: 화재나 도난에 대비해 하나는 집이 아닌 클라우드(Google Drive, AWS 등)나 다른 장소에 둡니다.
우리는 나중에 Rclone이라는 도구를 배워, 새벽에 만든 백업 파일을 구글 드라이브로 자동 전송하는 과정까지 진행할 예정입니다.
5. 마치며: 이제 안심하고 주무셔도 됩니다
오늘 여러분은 서버 관리의 가장 지루하지만 중요한 단계를 자동화했습니다. "백업이 없는 데이터는 존재하지 않는 데이터와 같다"는 격언이 있습니다. 이제 여러분의 소중한 추억과 설정들은 서버가 스스로 지켜낼 것입니다.
다음 편에서는 숫자로 된 IP 주소 대신, myhome.com 같은 나만의 멋진 도메인을 연결하고 보안 통신(HTTPS)을 적용하는 '도메인 연결과 SSL 인증서 적용'에 대해 알아보겠습니다. 드디어 서버에 근사한 문패를 다는 날입니다!
[핵심 요약]
- 크론탭(Crontab)은 정해진 시간에 반복적인 작업을 수행하는 리눅스의 표준 자동화 도구입니다.
- 백업 스크립트를 활용하면 압축, 날짜별 저장, 오래된 파일 삭제를 한 번에 처리할 수 있습니다.
- 3-2-1 법칙을 준수하여 데이터 손실 가능성을 0%에 수렴하게 만들어야 합니다.
- 자동화는 관리자의 실수를 줄이고 서버 운영의 안정성을 극대화하는 핵심 요소입니다.
다음 편 예고: "[도메인] 숫자 IP는 가라, 나만의 도메인 연결과 SSL 인증서(HTTPS) 적용" - 보안과 신뢰를 상징하는 자물쇠 마크를 달아봅시다!
질문: 크론탭 설정을 마치고 crontab -l을 입력했을 때 내가 쓴 내용이 잘 나오나요? 혹시 백업 파일이 제대로 생성되었는지 확인해 보셨나요? 테스트는 필수입니다!
0 댓글