본문 바로가기
Shell Script/Resource Monitoring

(Shell Script) 자동 백업 스크립트 만들기

by 미니몬 2023. 7. 16.

목차

    728x90
    반응형

    Summary

    오늘은 리눅스 환경에서 간단한 백업 스크립트를 만들어 Cron 동작을 통해 자동으로 특정 디렉터리를 백업하는 내용에 대해 다뤄보겠습니다. 특히, 주요한 서버에서 자주 발생하는 작업 중 하나인 백업에 초점을 맞추어 보겠습니다.
    매일 디렉토리를 백업하고, 일주일마다 이전 백업을 삭제하는 스크립트를 만들어 7일간의 백업을 진행해보겠습니다.

     

     

    스크립트 작성 및 설명

    1) 백업할 디렉터리와 백업파일을 저장할 디렉터리를 지정합니다 :

    # 백업할 디렉토리 설정
    SOURCE_DIR=/home/user/data
    
    # 백업 파일을 저장할 디렉토리 설정
    BACKUP_DIR=/home/user/backup

     

    2) 백업 파일에 사용될 날짜 데이터를 저장합니다 : 

    # 현재 날짜 가져오기
    DATE=$(date +%Y%m%d)

     DATE 변수는 'YYYYMMDD' 형식의 현재날짜 데이터를 저장하게 됩니다.

     

    3) 백업 파일의 이름을 설정하고 백업을 진행합니다 :

    # 백업 파일 이름 설정
    BACKUP_NAME=backup_$DATE.tar.gz
    
    # 백업 실행
    tar -czf $BACKUP_DIR/$BACKUP_NAME $SOURCE_DIR

     tar -czf [경로/파일이름] [백업할 파일] 명령으로 압축하여 백업 실행

     

    4) 백업 디렉터리에서 1주일이 지난 백업파일을 제거 :

    # 일주일 이전 백업 삭제
    find $BACKUP_DIR -name "backup_*.tar.gz" -type f -mtime +6 -exec rm {} \;

     

     

     

     

    전체 스크립트

    아래 코드는 매일 /home/user/data 디렉터리를 백업하고, 일주일 이전의 백업파일을 삭제해주는 스크립트입니다.

    #!/bin/bash
    
    # 백업할 디렉토리 설정
    SOURCE_DIR=/home/user/data
    
    # 백업 파일을 저장할 디렉토리 설정
    BACKUP_DIR=/home/user/backup
    
    # 현재 날짜 가져오기
    DATE=$(date +%Y%m%d)
    
    # 백업 파일 이름 설정
    BACKUP_NAME=backup_$DATE.tar.gz
    
    # 백업 실행
    tar -czf $BACKUP_DIR/$BACKUP_NAME $SOURCE_DIR
    
    # 일주일 이전 백업 삭제
    find $BACKUP_DIR -name "backup_*.tar.gz" -type f -mtime +6 -exec rm {} \;

     

     

     

    Crontab 등록하여 자동으로 실행

    이렇게 만든 스크립트를 주기적으로 실행하여 백업을 하고자 한다면 cron 작업 스케줄러를 사용할 수 있습니다.

    매일 00시 00분에 주기적으로 실행되도록 설정해보겠습니다.

     

    1) 터미널에서 `crontab -e` 명령을 입력합니다

    2) 아래와 같이 입력 후 저장합니다

    0 0 * * * /path/to/your/script.sh

    마지막으로, `chmod +x /path/to/your/script.sh` 명령으로 스크립트의 실행 권한을 부여 합니다.

     

     

     

    위 내용을 통하여 간단한 백업 스크립트를 만들고 Cron 스케줄러를 이용해서 자동으로 

    실행하는 방법에 대해 살펴보았습니다. 다음 포스팅에서는 다른 유용한 스크립트를 만들어 보겠습니다.

     

     

    728x90
    반응형