매일 정해진 경로의 파일을 압축해서 보관하고, 3일이 지난 백업은 자동 삭제하는 백업 스케쥴을 만들어보려고 합니다.
#!/bin/bash
# 날짜 포맷
DATE=$(date +%Y%m%d)
BACKUP_DIR=/home/backup/
# 백업 디렉토리 존재 여부 확인 및 생성
if [ ! -d "$BACKUP_DIR" ]; then
mkdir -p $BACKUP_DIR
fi
# 로그 파일
LOGFILE=$BACKUP_DIR/backup_$DATE.log
# 블로그 디렉토리 백업
tar -czvf $BACKUP_DIR$DATE".blog.tar.gz" /home/blog >> $LOGFILE 2>&1
# 3일 이상된 백업 파일 삭제
find $BACKUP_DIR -type f -ctime +3 -exec rm -f {} \; >> $LOGFILE 2>&1
# 완료 로그 메시지
echo "Backup and cleanup completed on $DATE" >> $LOGFILE
- 스크립트가 실행되면 정해진 경로의 파일을 압축 후 정해진 백업 디렉토리에 생성
- 백업 디렉토리 확인 및 생성:
if [ ! -d "$BACKUP_DIR" ]; then mkdir -p $BACKUP_DIR; fi
- 로그 파일 추가: 백업 및 삭제 작업의 로그를
$BACKUP_DIR/backup_$DATE.log
파일에 기록합니다. -type f
옵션 추가:find
명령에서 파일만 선택하도록-type f
옵션을 추가하여 디렉토리나 다른 유형의 항목을 잘못 삭제하는 것을 방지합니다.- 3일 이상된 백업 파일은 자동 삭제
이렇게 하면 스크립트가 보다 명확하고 오류가 발생할 가능성이 줄어듭니다. 압축 및 삭제 작업이 수행될 때 로그 파일을 확인하여 어떤 문제가 발생했는지 추적할 수 있습니다.
이제 crontab 에 등록 시켜서 백업을 매일 새벽 2시에 실행하게 합니다.
크론탭을 이용하여 매일 오전 2:00에 backup.sh
스크립트를 실행하는 방법은 다음과 같습니다:
- 크론탭 열기: 터미널에서 다음 명령어를 입력하여 현재 사용자의 크론탭을 편집합니다.
crontab -e
이 명령어를 실행하면 기본 텍스트 편집기가 열리며, 크론탭 설정을 편집할 수 있습니다. - 작업 추가하기: 열린 편집기에서 아래와 같이 작업을 추가합니다.
0 2 * * * bash /path/to/backup.sh
여기서 각 필드의 의미는 다음과 같습니다:0
: 분 (0분)
2
: 시 (2시)
*
: 모든 날짜
*
: 모든 월
*
: 모든 요일
따라서 위의 설정은 매일 자정 2시 (오전 2시)에bash /path/to/backup.sh
명령어를 실행하도록 크론탭에 등록하는 것입니다. - 저장하고 나가기: 설정을 완료한 후에는 편집기를 종료하고 변경사항을 저장합니다. 일반적으로는 텍스트 편집기에서
Ctrl + X
를 누르고 저장 여부를 묻는 메시지가 나오면Y
를 입력한 후 엔터를 누릅니다.
이제 설정한 크론탭 작업은 매일 오전 2:00에 backup.sh
스크립트를 실행하게 됩니다. 설정이 제대로 되었는지 확인하려면 crontab -l
명령어를 사용하여 현재 사용자의 크론탭 설정을 확인할 수 있습니다.
