vi 편집기에서 :! 를 쓰면 명령을 실행할 수 있음
웹서버(cent1)에 백업 쉘 스크립트 만들기
vi web_backup.sh
#!/bin/bash
##변수설정
HOST="$(/usr/bin/hostname)"
-->때쉘스크립트는 ssh로 접속해서 실행을 할 적용되어있는 환경변수와 크론텝에서 읽어들이는 환경변수가 다르다. 패스라는 환경변수에 기본으로 등록되어있는 /bin/ 이나 /usr/bin이 있는데 크론텝에서 못읽어오는 경우가 있다. 그래서 풀패스를 작성해야한다.
LOG="/root/backup.log"
PUSH="/root/SHELL/monitor/tel_push.sh"
DATE="$(/bin/date +%Y.%m.%d)"
##백업할 디렉토리 /파일을 지정
BAK_LIST="/etc/nginx /usr/share/nginx/html/www"
##백업 디렉토리
BAK_PATH="/mnt/BACKUP/${HOST}"
##백업파일명
BAK_FILE="${BAK_PATH} / ${DATE}_ ${HOST}.tgz"
##스토리지에 마운트
/usr/bin/mount /mnt
##로그파일 생성
/usr/bin/touch "${LOG}"
##백업 디렉토리 확인
if [ -e "${BAK_PATH}" ]
then
##백업 디렉토리가 존재한다면
/usr/bin/echo " 백업 디렉토리가 있어요. 문제 없음"
else
##백업 디렉토리가 없으면 생성
/usr/bin/mkdir -p "${BAK_PATH}"
fi
mkdir -p : 부모디렉토리와 함께 생성
##---로그 기록시작 ({중괄호}로 시작과 끝을 정의함)
{
##백업 시작 시간
/bin/echo
/bin/echo "=== 백업시작 시간"
/bin/date
/bin/echo
##백업
/usr/bin/tar czpPf "${BAK_FILE}" ${BAK_LIST} <-- ${BAK_LIST}에는 ""를 안붙인 이유 : 위에 변수선언할 때 이미 ""를 붙혀줬기때문에
p : 퍼미션유지 P : 절대경로유지
##백업파일 정보
NAME="${/usr/bin/ls -al " ${BAK_FILE}" | awk '{print $9}' }"
SIZE="${/usr/bin/ls -al " ${BAK_FILE}" | awk '{pprint $5}' }"
/bin/echo "=== 백업 파일 정보 : "
/bin/echo " | 파일명 : ${NAME}"
/bin/echo " | 파일크기 : ${SIZE}Byte"
/bin/echo
##백업 종료 시간
/bin/echo
/bin/echo "=== 백업종료 시간"
/bin/date
/bin/echo
} >|"${LOG}"
##---로그기록 끝
##스토리지에 언마운트
/usr/bin/umount /mnt
##텔레그램으로 백업 로그를 전송
"${PUSH}" " ${HOST}" " $(/usr/bin/cat " ${LOG}")"
##로그파일 삭제
/usrr/bin/rm -f "{LOG}"
crontab -e
00 04 * * * /root/SHELL/BACKUP/web_backup.sh >/dev/null 2>$1
'클라우드 > BashShell' 카테고리의 다른 글
웹, 데이터베이스 서버 트러블슈팅을 위한 쉘스크립트 (0) | 2023.03.08 |
---|---|
백업 쉘 스크립트 3 (0) | 2023.03.06 |
백업 쉘 스크립트 1 (0) | 2023.03.05 |
웹서버 트러블의 재발 방지를 위한 쉘 스크립트 2 (0) | 2023.03.05 |
웹서버 트러블의 재발 방지를 위한 쉘 스크립트 1 (3) | 2023.03.04 |