[Backup] Shell script를 이용하여 자동 백업하기 (feat.crontab)

가비·2021년 7월 30일
0

🚨 n개월전 서버내 이미지가 몽.땅 날아가는 경험을 하고 백업의 중요성을 알게 되어 울면서 작성한 쉘 스크립트..

#!/bin/bash

output=`df -hP |grep /dev/xvda1 |awk '{print $5}'`                                  [1]
use=$(echo $output | cut -d'%' -f1)                                                 [2]
if [ $use -ge 80 ]; then                                                            [3]
    message="*[WARN] 디스크 사용량 경고 "$"$output*"$'\n'
    echo "$message"
    data="{\"text\": \"$message\"}"
    slack_webhook="생성된 Webhook URL"
    curl -X POST -H 'Content-type: application/json' --data "$data" $slack_webhook  [4]

else
    DATE=$(date +%Y%m%d)                                                            [5]
    DB_BACKUP_DIR=/backup/db
    APP_BACKUP_DIR=/backup/app

    mysqldump -u root -p'password' database명 > $DB_BACKUP_DIR/$DATE.sql
    tar -zcf $APP_BACKUP_DIR/$DATE.tar.gz ./target
fi

[1] 디스크 사용량 확인 명령어 변수에 저장(위에서는 '/dev/xvda1' 디스크에 대한 용량 확인)
    df 명령어에 -hP 옵션을 주어 보기좋게(h) 한줄로(P) 5번째 필드인 'Use%' 값 출력
[2] [1] 명령어 실행 후 출력된 사용량 값에 '%' 문자열 제거하여 변수에 저장
[3] [2] 에서 저장된 값이 80 이상이면
[4] 슬랙 Webhook API 이용하여 메세지 발송
[5] 실행된 날짜의 백업 파일명 지정을 위해 date 함수를 이용한 변수 생성

이제 크론탭을 이용하여 원하는 주기에 스크립트 실행 예약을 걸어주면 완성 !

✨크론탭 시간 설정 시 굉장히 도움되는 사이트
Slack Webhook 참고

0개의 댓글