inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

/mnt/BACKUP 폴더가 생기지 않아서 문의드립니다

250

KIM SO JUNG

작성한 질문수 3

0

안녕하세요! 강의 정말 잘 듣고 있습니다~

/mnt/BACKUP/host 파일을 못 찾아서 질문드립니다

 

db_backup.sh코드는 다음과 같습니다.

#!/bin/bash
## 변수 설정, 
## HOST =${hostname}으로 할 시 크론탭이 hostname 못 읽을 수 있어 hostname 파일이 있는 절대 경로의 path로 지정해야함

HOST="$(/usr/bin/hostname)"
LOG="/tmp/backup.log"
PUSH="/vagrant/SHELL/monitor/bot.sh"
DATE="$(/bin/date +%Y.%m.%d)" ## 년.월.일
## 백업할 db 설정 파일
BAK_LIST="/etc/my.cnf.d"
## 백업 디렉토리
BAK_PATH="/mnt/BACKUP/${HOST}"
## 백업 파일명
BAK_FILE="${BAK_PATH}/${DATE}_${HOST}.tgz"

## 디비 백업 디렉토리 --> mariadb 사용시 디폴트로 생성되는 파일
DB_BAK_PATH="/vagrant/SHELL/BACKUP/xtrabackup_backupfiles"

## 디비 백업 파일명
DB_BAK_FILE="${BAK_PATH}/${DATE}_${HOST}_DB.tgz"

## 스토리지에 마운트, 필요할 때마다 접속해서 마운트&언마운트 하기
/usr/bin/mount /mnt

## 로그 파일 생성
/usr/bin/touch "${LOG}"

## 백업 디렉토리 확인 (없으면 에러 날 수 있으니 에러 예방)
if [ -e "${BAK_PATH}" ]
then
	## 백업 디렉토리 존재
	/bin/echo "백업 디렉토리 있습니다. 문제 없음."
else
	## 백업 디렉토리 없으니 생성
	/usr/bin/mkdir -p "${BAK_PATH}"
fi

## ****** 로그 기록 시작 - 중과호 안의 내용이 LOG 파일로 저장
{	
	## 백업 시작 시각
	/bin/echo
	/bin/echo "=== 백업 시작 시각: "
	/bin/date
	/bin/echo
	
    
	## 백업✨✨✨
	## DB dump✨✨✨ <-- 추가된 부분
	/usr/bin/mariabackup \
			--backup \
			--no-lock \
			--target-dir="${DB_BAK_PATH}"
	
	## 백업할 때 변경되는 트랜잭션도 백업 해줘야해서 두 번 백업
	## DB apply logs✨✨✨ <-- 추가된 부분
	/usr/bin/mariabackup \
			--prepare \
			--target-dir="${DB_BAK_PATH}"
	
	/usr/bin/tar czpPf "${BAK_FILE}" ${BAK_LIST}
	
	## 위에서 백업한 DB 디렉토리 압축하기
	/usr/bin/tar czpPf "${DB_BAK_FILE}" ${DB_BAK_PATH}
	
	## 백업 파일 정보
	NAME="$(/usr/bin/ls -al "${BAK_FILE}" | awk '{print $9}')"
	SIZE="$(/usr/bin/ls -al "${BAK_FILE}" | awk '{print $5}')"
	/bin/echo "=== 백업 파일 정보 :"
	/bin/echo " | 파일명: ${NAME}"
	/bin/echo " | 파일크기: ${SIZE}Byte" ## ls로 출력할 때 byte로 뜸
	/bin/echo
	

	
	## DB 백업 파일 정보
	NAME="$(/usr/bin/ls -al "${DB_BAK_FILE}" | awk '{print $9}')"
	SIZE="$(/usr/bin/ls -al "${DB_BAK_FILE}" | awk '{print $5}')"
	/bin/echo "=== DB 백업 파일 정보 :"
	/bin/echo " | 파일명: ${NAME}"
	/bin/echo " | 파일크기: ${SIZE}Byte" ## ls로 출력할 때 byte로 뜸
	/bin/echo
	
	## 백업 종료 시각
	/bin/echo
	/bin/echo "=== 백업 종료 시각: "
	/bin/date
	/bin/echo

} >|"${LOG}"
## ***** 로그 기록 끝

## 스토리지에 언마운트
/usr/bin/umount /mnt

## 텔레그램으로 백업 로그를 전송
"${PUSH}" "${HOST}" "$(/usr/bin/cat "${LOG}")"

## 로그 파일 삭제
/usr/bin/rm -f "${LOG}"

 

./db_backup.sh를 실행시켰을 시 에러로그 부분입니다.

/usr/bin/tar: Cowardly refusing to create an empty archive
Try '/usr/bin/tar --help' or '/usr/bin/tar --usage' for more information.
/usr/bin/ls: cannot access '/vagrant/SHELL/BACKUP/xtrabackup_backupfiles/2021.12.04_path_DB.tgz': No such file or directory
/usr/bin/ls: cannot access '/vagrant/SHELL/BACKUP/xtrabackup_backupfiles/2021.12.04_path_DB.tgz': No such file or directory

텔레그램 봇에서 메세지는 다음과 같이 출력됩니다.

2021-12-04 00:18 [path] 
=== 백업 시작 시각: 
Sat Dec  4 00:18:28 UTC 2021

=== 백업 파일 정보 :
 | 파일명: /mnt/BACKUP/path/2021.12.04_path.tgz
 | 파일크기: 2321Byte

=== DB 백업 파일 정보 :
 | 파일명: 
 | 파일크기: Byte


=== 백업 종료 시각: 
Sat Dec  4 00:18:29 UTC 2021

 

이유는 모르겠지만 hostname이 path로 출력돼서 아래와 같이 실행했는데 없는 디렉토리라고 뜹니다...

 

텔레그램 메세지를 보니 디비 설정 파일은 압축된거 같은데

 

이유가 무엇일까요?

# ls -al /mnt/BACKUP/path/
ls: cannot access '/mnt/BACKUP/path/': No such file or directory

읽어주셔서 감사합니다!

linux shell-script

답변 1

0

그로스쿨

안녕하세요!!!! :) 엄청 꼼꼼히 잘 따라하고 계시네요!!!!

(이럴 때 강의 기획자와 운영자로서 쾌감...... ㅠㅠ 감사합니다!)

민구님이 밤 사이 슥슥 보시고 답변을 주셔서 아래 드릴게요!

zeze님 계속 화이팅입니다!

1. echo "${HOST}" 값이 path 라고 나오는 것인지 쉘 스크립트 안에서 확인 해 주세요. 
   그리고 쉘스크립트의 끝부분에 스토리지를 언마운트 하는 부분이 있습니다. 
   스크립트 실행 이후에 파일을 확인하려면 mount /mnt 를 실행한 후에 확인 해 주세요.
 
2. DB백업파일을 놔두는 경로와 텔레그램봇이 /vagrant 하위에 있는데 권한 등의 문제가 발생하지 않도록 백업 쉘 스크립트와 같은 권한을 가진 디렉토리 내에 두시는 것이 좋을 것 같습니다.
   에러로그에 디비백업파일에 액세스가 안된다고 나오는데 백업에 실패했을 수도 있으니 그 부분도 확인 해 보세요. 

텔레그램 봇 메세지 전송기능을 여러 서버에 이용하려면

0

168

2

컨테이너에서 다른 컨테이너 접속시

0

126

2

실습 주소에 172.18.1.91를 접속하니 접속이 되지 않습니다

0

136

2

atlassian 접속이 안됩니다

0

210

2

docker 컨테이너로 가상환경 구축 시 init.sh 관련 에러 로그

0

254

2

백업 쉘스크립트 3 질문있어요

0

122

1

telegram 문자보내기 오류

0

227

1

2-2 초기 셋팅 질문드려요!

0

342

3

Linux top 커맨드에 대한 질문

0

158

1

2-0. 진행 후 웹사이트 접속이 안됩니다.

0

317

2

커리큘럼-강의교안

0

320

3

web_backup.sh 실행 시 mount.nfs No host to mount

0

375

1

환경설정 압축파일 해제 불가

0

319

1

SecureCRT 접속 오류

0

841

1

강의에서 로그를 쌓게 하는 vws.tmpcompany.com 이제 접속이 안되는건가요?

0

390

1

강의에서 보여주시는 컨플이나 자료 따로 있을까요?

0

329

1

vagrant up 명령어 실행시

1

385

1

vagrant ssh 접속 에러

0

561

2

서버 구축시 문제 발생

0

453

2

버츄얼박스 설치에러

0

314

1

스크립트 실행 결과 미표시

0

310

1

맥북 지원

0

378

1

[해결방법] 네트워크 어댑터 에러 메시지

1

407

2

DB 백업 스크립트 실행 오류

0

451

1