백업 방법
#!/bin/bash
# 네임스페이스 가져오기
NAMESPACE=$(/home/git/.local/bin/oci os ns get --query data --raw-output)
# 작업 폴더 생성
WORK_DIR="gitea_backup"
mkdir -p $WORK_DIR && cd $WORK_DIR
# 백업 실행
gitea dump -c /etc/gitea/app.ini
# 압축해제
unzip gitea-dump-*.zip && rm gitea-dump-*.zip
# tar.gz 재압축
BACKUP_FILE="gitea-dump.tar.gz"
tar -cvzf $BACKUP_FILE *
# 현재 백업 파일의 크기 확인
CURRENT_SIZE=$(stat -c%s "$BACKUP_FILE")
# 버킷에서 최신 백업 파일의 크기 확인
LATEST_BACKUP=$(/home/git/.local/bin/oci os object list -ns cn3gq8qsgvft -bn LHK_Private --prefix gitea-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="gitea-dump-$(date "+%Y%m%d%H%M%S").tar.gz"
/home/git/.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 gitea_backup_script.sh
crontab -e
# 매일 새벽 1시 백업
0 1 * * * sh gitea_backup_script.sh
sudo service cron restart복구 방법
# 백업 파일 압축 해제
tar -xvzf gitea-dump-*.tar.gz
# 설정 파일 복사
cp app.ini /etc/gitea/app.ini
# 저장소 복사
cp -r repos/* /var/lib/gitea/data/gitea-repositories/
# 데이터 디렉토리 복사
cp -r data/* /var/lib/gitea/data/
# 데이터베이스 복원 (SQLite3 사용 시)
cp gitea-db.sql /var/lib/gitea/data/gitea.db
# 권한 설정
chown -R git:git /var/lib/gitea데이터베이스 복원 후, Gitea 서비스를 시작
sudo systemctl start gitea마지막으로, 저장소 훅을 재생성
su git
gitea admin regenerate hooks