백업 방법
#!/bin/bash
# 네임스페이스 가져오기
NAMESPACE=$(/home/ubuntu/.local/bin/ os ns get --query data --raw-output)
# 작업 폴더 생성
WORK_DIR="grav_backup"
mkdir -p $WORK_DIR && cd $WORK_DIR
# tar.gz 압축
BACKUP_FILE="grav-dump.tar.gz"
tar -cvzf $BACKUP_FILE /var/www/grav
# 현재 백업 파일의 크기 확인
CURRENT_SIZE=$(stat -c%s "$BACKUP_FILE")
# 버킷에서 최신 백업 파일의 크기 확인
LATEST_BACKUP=$(/home/ubuntu/.local/bin/ os object list -ns $NAMESPACE -bn LHK_Private --prefix grav-dump --all | jq -r '.data | sort_by(.["time-created"]) | reverse | .[0]')
LATEST_SIZE=$(echo $LATEST_BACKUP | jq -r '.size')
# 파일 크기 비교
if [ "$CURRENT_SIZE" != "$LATEST_SIZE" ]; then
echo "변경사항이 감지되었습니다. 새로운 백업을 업로드합니다."
# 업로드
NEW_BACKUP_NAME="grav-dump-$(date "+%Y%m%d%H%M%S").tar.gz"
/home/ubuntu/.local/bin/oci os object put -ns $NAMESPACE --bucket-name LHK_Private --file ./$BACKUP_FILE --name $NEW_BACKUP_NAME
echo "새로운 백업이 업로드되었습니다: $NEW_BACKUP_NAME"
else
echo "변경사항이 없습니다. 백업을 건너뜁니다."
fi
# 작업 폴더 삭제
cd .. && rm -rf $WORK_DIR
백업 자동화
백업 스크립트 생성
vi grav_backup_script.sh
crontab -e
# 매일 새벽 1시 백업
0 1 * * * sh gitea_backup_script.sh
sudo service cron restart