인프런 커뮤니티 질문&답변

오리너구리님의 프로필 이미지

작성한 질문수

시스템엔지니어가 알려주는 리눅스 실전편 Bash Shell Script

2-4. 백업 쉘 스크립트(1)

백업 스크립트 질문입니다

해결된 질문

23.02.22 19:18 작성

·

453

·

수정됨

0

안녕하세요 2-5강에서 백업 쉘스크립트 강의를 듣고 스크립트를 작성했는데 실행해보니 아무일도 일어나지 않고 대기만 되는 상황이에요 ㅜㅜ 디버깅 옵션을 주고 실행하니

스크린샷 2023-02-22 오후 7.16.24.png이곳에서 멈추는데 제가 어떤걸 잘못한걸까요? ㅠㅠ 아래는 작성한 스크립트 입니다

#!/bin/bash -x

## 변수 설정

HOST="$(/usr/bin/hostname)"

LOG="/tmp/backup.log"

PUSH="/vagrant/SHELL/backup/telegram.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

/bin/echo "백업 디렉토리가 있어요!"

else

/usr/bin/mkdir -p "${BAK_PATH}"

fi

## ----로그기록 시작

{

/bin/echo

/bin/echo "=== backup start :"

/bin/date

/bin/echo

## 백업

/usr/bin/tar czpPf "${BAK_FILE}" ${BAK_LIST}

## 백업파일 정보

NAME="$(/usr/bin/ls -al "${BAK_FILE}" | awk '{print $9}')"

SIZE="$(/usr/bin/ls -al "${BAK_FILE}" | awk '{print $5}')"

/bin/echo "=== backup info: "

/bin/echo " | filename: ${NAME}"

/bin/echo " | filesize: ${SIZE}Byte"

/bin/echo

/bin/echo

/bin/echo "=== backup success :"

/bin/date

/bin/echo

}>|"${LOG}"

## ----로그 기록 끝

## 스토리지에 언마운트

/usr/bin/umount /mnt

## 텔레그램으로 백업 로그 전송

"${PUSH}" "${HOST}" "$(/usr/bin/cat "${LOG}")"

## 로그 파일 삭제

/usr/bin/rm -f "${LOG}" 

답변 2

1

오리너구리님의 프로필 이미지

2023. 02. 23. 15:26

감사합니다 해결하였어요! vbox의 네트워크 대역 이슈때문에 기존 서버들의 ip주소를 192.x.x.x 대역으로 모두 바꾸었는데 cent3 /etc/exports 파일의 ip를 수정하지 않아서 발생한 오류였습니다! 항상 강의 잘 듣고 있습니다 감사해요

0

그로스쿨님의 프로필 이미지
그로스쿨
지식공유자

2023. 02. 23. 10:27

하륜님 안녕하세요.

보내주신 로그를 보니 mount /mnt 에서 멈추네요.

두 가지를 확인해 보시면 될 것 같습니다.

  • nfs 서버 설정이 잘 되어있는 지 확인해주세요.

  • nfs마운트 설정이 /etc/fstab에 있는지 확인하고 없으면 만들어주세요.

    • 2-5강좌의 12:05에 설정이 나옵니다.

 

nfs설정이 잘 되었는 지 확인하는 방법은 아래와 같습니다.

  • mount /mnt 로 마운트가 잘 되는지 확인

    • 마운트 상태는 df 명령어로 확인

  • umount /mnt 로 마운트가 해제되는 것을 확인

    • 언마운트 상태는 df 명령어로 확인

 

지금 작성하신 web_backup.sh 를 cent2에서 실행하신 것 같은데 웹서버인 cent1에서 실행을 해 주세요.

set -euo pipefail 을 활용하는 방법도 강좌에서 설명하고 있으니 차례대로 차근차근 따라해 보시면 문제없을 것 같습니다.

또 안되거나 모르는 부분이 있으면 언제든지 질문 남겨주세요.

응원합니다! 화이팅!!