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



+ Recent posts