리눅스 서버를 운영하다 보면 웹사이트의 파일이나 데이터베이스를 정기적으로 백업해야 하는 상황이 생깁니다.
특히 개인 서버나 AWS EC2와 같은 클라우드 서버를 운영할 때는 서버 장애, 실수로 인한 파일 삭제, 프로그램 오류 등에 대비해 자동 백업 시스템을 만들어두는 것이 중요합니다.
하지만 매일 직접 백업 명령어를 실행하는 것은 번거롭고, 바쁜 날에는 백업 자체를 잊어버릴 수도 있습니다.
이럴 때 활용할 수 있는 기능이 바로 Linux Crontab(크론탭)입니다.
Crontab을 이용하면 특정 시간에 원하는 명령어나 스크립트를 자동으로 실행할 수 있습니다.
이번 글에서는 리눅스 서버에서 Crontab을 활용해 서버 파일을 자동으로 백업하는 기본적인 방법을 단계별로 알아보겠습니다.
1. Crontab이

1. Crontab이란?
Crontab은 Linux에서 특정 작업을 정해진 시간에 자동으로 실행하기 위한 기능입니다.
예를 들어 다음과 같은 작업을 자동화할 수 있습니다.
- 매일 서버 파일 백업
- 데이터베이스 백업
- 오래된 로그 삭제
- 임시 파일 정리
- 특정 프로그램 자동 실행
- 정기적인 시스템 관리 작업
Crontab에 등록된 작업은 Cron 데몬이 주기적으로 확인하고 지정된 시간에 실행합니다. 일반적인 crontab 형식은 분, 시, 일, 월, 요일의 다섯 가지 시간 필드와 실행할 명령으로 구성됩니다.
2. Crontab 기본 형식 이해하기
Crontab의 기본적인 형태는 다음과 같습니다.
예를 들어 매일 새벽 3시에 백업 스크립트를 실행하려면 다음과 같이 작성할 수 있습니다.
각 숫자의 의미는 다음과 같습니다.
| 첫 번째 | 분 | 0~59 |
| 두 번째 | 시 | 0~23 |
| 세 번째 | 일 | 1~31 |
| 네 번째 | 월 | 1~12 |
| 다섯 번째 | 요일 | 0~7 |
| 마지막 | 실행 명령 | 명령어 또는 스크립트 |
요일은 일반적으로 0 또는 7이 일요일을 의미합니다.
3. Crontab 현재 설정 확인하기
현재 사용자에게 등록되어 있는 Cron 작업은 다음 명령어로 확인할 수 있습니다.
아직 등록된 작업이 없다면 별도의 작업이 표시되지 않을 수 있습니다.
Crontab을 편집하려면 다음 명령어를 사용합니다.
-e는 현재 사용자의 crontab을 편집하는 옵션입니다.
4. 서버 백업 디렉터리 만들기
먼저 백업 파일을 저장할 디렉터리를 만들어보겠습니다.
예를 들어 웹사이트 파일이 다음 위치에 있다고 가정하겠습니다.
이 디렉터리를 압축해서 백업하는 방법을 사용해보겠습니다.
5. 간단한 백업 스크립트 만들기
먼저 스크립트 파일을 생성합니다.
그리고 다음 내용을 입력합니다.
이 스크립트는 현재 날짜와 시간을 이용해 백업 파일 이름을 자동으로 만들어줍니다.
예를 들어 다음과 같은 파일이 생성될 수 있습니다.
이렇게 날짜와 시간이 파일 이름에 포함되면 여러 개의 백업 파일을 관리하기 편리합니다.
user 부분은 실제 서버에서 사용하는 사용자 이름에 맞게 수정해야 합니다.
6. 백업 스크립트 실행 권한 부여하기
스크립트를 만든 다음 실행 권한을 추가합니다.
그리고 직접 실행해봅니다.
오류가 없다면 백업 디렉터리를 확인합니다.
백업 파일이 생성되었다면 기본적인 스크립트 작성은 정상적으로 작동한 것입니다.
자동화하기 전에 직접 실행해서 정상적으로 백업되는지 확인하는 과정이 중요합니다.
7. Crontab에 자동 백업 등록하기
이제 Crontab을 실행합니다.
맨 아래에 다음 내용을 추가합니다.
이 설정은 매일 새벽 3시에 백업 스크립트를 실행한다는 의미입니다.
Crontab은 작업 시간이 현재 시각과 일치하는지 확인하면서 예약된 명령을 실행합니다.
8. 백업이 너무 많이 쌓이지 않도록 관리하기
자동 백업을 설정하면 새로운 백업 파일이 계속 생성됩니다.
처음에는 문제가 없어 보이지만 몇 달이 지나면 백업 파일이 상당한 디스크 공간을 차지할 수 있습니다.
따라서 일정 기간이 지난 백업을 자동으로 삭제하도록 구성할 수 있습니다.
예를 들어 7일이 지난 백업 파일을 삭제하려면 다음 명령어를 사용할 수 있습니다.
백업 스크립트를 다음과 같이 구성할 수도 있습니다.
이렇게 하면 새로운 백업을 만든 후 오래된 백업을 정리할 수 있습니다.
다만 실제 운영 서버에서는 보관 기간을 충분히 검토한 후 삭제 정책을 정하는 것이 좋습니다.
9. 데이터베이스도 자동 백업할 수 있을까?
가능합니다.
웹사이트 파일뿐만 아니라 MySQL 같은 데이터베이스도 정기적으로 백업하는 것이 좋습니다.
예를 들어 MySQL 데이터베이스를 백업할 때는 일반적으로 mysqldump 등을 활용할 수 있습니다.
기본적인 형태는 다음과 같습니다.
하지만 비밀번호를 스크립트에 그대로 적어두는 방식은 보안상 주의가 필요합니다.
실제 운영 환경에서는 데이터베이스 인증정보를 안전하게 관리하고, 백업 파일의 접근 권한 역시 제한하는 것이 좋습니다.
10. Crontab 작업이 실행되지 않을 때 확인할 것
Crontab을 등록했는데 백업 파일이 만들어지지 않는 경우가 있습니다.
이때는 다음 사항을 차례대로 확인해보세요.
첫 번째, Crontab 등록 여부 확인
백업 작업이 제대로 등록되어 있는지 확인합니다.
두 번째, 스크립트를 직접 실행
직접 실행했을 때 오류가 발생한다면 먼저 스크립트부터 수정해야 합니다.
세 번째, 실행 권한 확인
실행 권한이 제대로 설정되어 있는지 확인합니다.
네 번째, 절대 경로 사용
Cron은 일반적인 터미널 환경과 실행 환경이 다를 수 있습니다.
따라서 자동화 스크립트에서는 가능한 한 명령어와 파일의 절대 경로를 명확하게 지정하는 것이 좋습니다.
Crontab 작업은 해당 crontab을 소유한 사용자 권한으로 실행되므로 파일 접근 권한도 함께 확인해야 합니다.
11. 백업 결과를 로그로 남기기
자동 백업은 성공했는지 확인할 수 있어야 합니다.
따라서 실행 결과를 로그 파일에 저장하는 방법도 유용합니다.
Crontab을 다음처럼 작성할 수 있습니다.
여기에서 >>는 실행 결과를 로그 파일에 계속 추가하는 역할을 합니다.
2>&1은 오류 메시지도 같은 로그 파일에 기록하도록 하는 방식입니다.
이렇게 해두면 문제가 발생했을 때 로그를 확인하기 편리합니다.
Cron 환경에서는 명령의 표준 출력이나 오류가 별도로 처리될 수 있으므로 로그를 명시적으로 관리하는 방식이 실무에서 유용합니다.
12. 백업 파일을 같은 서버에만 보관하면 안전할까?
여기서 중요한 부분이 있습니다.
같은 서버에 백업 파일만 만들어 놓는 것은 완전한 백업이라고 보기 어렵습니다.
예를 들어 서버의 디스크 자체에 문제가 생기면 원본 데이터와 백업 파일이 동시에 손실될 수 있습니다.
따라서 중요한 서버라면 다음과 같이 백업 위치를 분리하는 방법을 고려하는 것이 좋습니다.
AWS 환경이라면 Amazon S3와 같은 별도의 저장공간을 활용하는 방법도 있습니다.
즉, 자동 백업의 핵심은 백업을 만드는 것뿐만 아니라 문제가 발생했을 때 실제로 복구할 수 있도록 준비하는 것입니다.
13. 백업은 복구 테스트까지 해야 한다
백업 파일이 만들어졌다고 해서 백업 시스템이 완성된 것은 아닙니다.
실제로 필요한 순간에 파일이 손상되어 있거나 복구 방법을 모르면 백업의 의미가 줄어듭니다.
따라서 가끔씩 테스트 환경에서 백업 파일을 압축 해제해보고 필요한 파일이 정상적으로 들어 있는지 확인하는 것이 좋습니다.
특히 데이터베이스 백업은 실제 복원 테스트까지 진행해보는 것이 더욱 중요합니다.
마무리
Linux Crontab은 복잡한 프로그램을 설치하지 않아도 반복적인 서버 관리 작업을 자동화할 수 있는 유용한 기능입니다.
이번 글에서는 Crontab을 활용해 서버 파일을 자동으로 백업하는 기본적인 방법을 살펴봤습니다.
핵심 과정은 다음과 같습니다.
백업 디렉터리 생성
↓
백업 스크립트 작성
↓
실행 권한 설정
↓
수동 실행으로 테스트
↓
Crontab 등록
↓
로그 및 백업 파일 확인
↓
오래된 백업 정리
자동 백업은 서버 운영에서 기본적인 관리 작업 중 하나입니다.
하지만 단순히 백업 파일을 생성하는 것만으로 끝내지 말고 백업 파일의 보관 위치, 보관 기간, 접근 권한, 복구 가능 여부까지 함께 관리하는 것이 중요합니다.
특히 중요한 데이터를 운영하는 서버라면 원본 서버와 다른 저장공간에 백업을 보관하는 방법을 고려하는 것이 좋습니다.
Crontab은 매일 반복되는 백업 작업을 자동화하는 좋은 출발점이지만, 자동 백업 + 외부 저장소 + 정기적인 복구 테스트까지 갖추면 훨씬 안정적인 서버 백업 환경을 만들 수 있습니다.