본문 바로가기
[AWS-FRF]/EC2

[중요2][AWS][BACKUP] 백업파일 보관 쉘스크립트 !!

by METAVERSE STORY 2024. 9. 25.
반응형
728x170

 

 

## vi backup.sh 참고

 

#!/bin/bash
 
# 백업 디렉토리 경로 설정
BACKUP_DIR="/home/XXXadm/service/XXX/bin/backup"
 
# 21일 이상 지난 백업 파일 삭제
echo "Deleting backup files older than 21 days..."
find "$BACKUP_DIR" -type f -name "*.jar" -mtime +21 -exec rm -f {} \;
echo "Old backup files deleted."
 
# 백업할 JAR 파일의 경로 설정 (경로를 실제 JAR 파일 경로로 수정하세요)
JAR_FILE="/home/XXXadm/service/XXX/bin/XXX-module.jar"
 
# 현재 날짜와 시간을 포맷팅 (예: 2024-08-26_12-30-00)
CURRENT_DATE=$(date +"%Y-%m-%d_%H-%M-%S")
 
# 원본 파일명 추출
JAR_FILENAME=$(basename "$JAR_FILE")
 
# 백업 파일명 설정
BACKUP_FILENAME="${JAR_FILENAME%.jar}_$CURRENT_DATE.jar"
 
# 백업 디렉토리가 존재하지 않는 경우 생성
if [ ! -d "$BACKUP_DIR" ]; then
  echo "Backup directory does not exist. Creating directory."
  mkdir -p "$BACKUP_DIR"
fi
 
# JAR 파일을 백업 디렉토리로 복사하면서 파일명에 날짜 추가
if [ -f "$JAR_FILE" ]; then
  cp "$JAR_FILE" "$BACKUP_DIR/$BACKUP_FILENAME"
  echo "Backup completed: $JAR_FILE -> $BACKUP_DIR/$BACKUP_FILENAME"
else
  echo "JAR file not found: $JAR_FILE"
fi

 

 

======================================

 

# 백업본 S3 버킷 업로드
echo "Uploading $BACKUP_FILENAME to S3..."
aws s3 cp "$BACKUP_DIR/$BACKUP_FILENAME" "$S3_BUCKET/"
 
if [ $? -eq 0 ]; then
  echo "Upload to S3 completed successfully: $S3_BUCKET/$BACKUP_FILENAME"
else
  echo "Failed to upload $BACKUP_FILENAME to S3."
fi

 

 

## 참고

true 가 0인가요??

C++, java 등의 컴퓨터 언어에선 true=1, false=0 으로 사용하고 있잖아요.

쉘 스크립트 에서만 true = 0 인 건가요?

--------------------------------------------------------

말씀하신 것처럼 프로그래밍 언어에서는 1은 참이고, 0은 거짓으로 처리됩니다

반면, 리눅스 쉘에서는 명령의 종료 상태 값은 0을 참으로, 1을 거짓으로 처리하고 있습니다

쉘에서의 함수 종료 처리 또한 마찬가지죠. 정상(exit 0), 오류(exit 1)

 

=====================================

유닉스에서 $?의 의미 

특수문자로 이루어진 $?의 의미는 무엇일까?

 

$의 경우 변수 선언했을 때  그 변수를 호출하는 특수문자이고

?의 경우 어느 한 문자를 가리키는 특수문자일터인데

뭔고 하니 $?의 의미는 이전의 상태를 나타내는 쉘스크립트에서 쓰이는 특수문자인듯

 이건 설명 보다 예를 드는 것이 더 쉬운듯

간단한 쉘스크립트를 보면

----------------------

#!/usr/bin/ksh

ls -al

echo $?
==> 0 출력

ls -8

echo $?
==> 2 출력

-----------------------

위 쉘을 돌려보면

ls -al의 경우 정상출력이 되므로 첫번쨰 에코값은 0이 출력

아래의 경우 -8은 옵션에 없는 것이므로

0이 아닌 다른값 출력.

 

 

반응형
그리드형

댓글