🚨 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 함수를 이용한 변수 생성
이제 크론탭을 이용하여 원하는 주기에 스크립트 실행 예약을 걸어주면 완성 !