Files
ncue_backup/README.md
dsyoon 9cf1ed0f8b Update default paths for Linux server deployment.
Use /home/dsyoon/workspace paths in cron and BACKUP_DIR examples for the ncue.net backup host.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-26 17:06:17 +09:00

101 lines
2.8 KiB
Markdown

# ncue_backup
ncue.net PostgreSQL, MariaDB, Gitea 저장소를 매일 백업하는 스크립트 모음입니다.
백업 방식은 [ai_platform](https://git.xavis.co.kr/AI_Innovation_Team/ai_platform)의 `scripts/pg-backup.sh` 패턴을 따릅니다.
## 백업 대상
| 구분 | 대상 | 스크립트 |
|------|------|----------|
| PostgreSQL | 연결 가능한 모든 DB (`ai_web_platform`, `meeting_ai`, `ncue`, `tts` 등) | `scripts/pg-backup.sh` |
| MariaDB | 사용자 DB 전체 (`giteadb`, `wordpress`, `roundcube` 등) | `scripts/mr-backup.sh` |
| Gitea | 접근 가능한 모든 Git 저장소 mirror | `scripts/gitea-backup.sh` |
Gitea 메타데이터 DB(`giteadb`)는 MariaDB 백업에 포함됩니다. Git 소스는 mirror 백업으로 별도 보관합니다.
## 사전 요구사항
- `pg_dump`, `psql` (PostgreSQL 클라이언트)
- `mysqldump`, `mysql` (MariaDB 클라이언트)
- `git`, `curl`, `python3`, `gzip`
- `pymysql` (MariaDB 클라이언트 미설치 시 Python 폴백용, `pip install -r requirements.txt`)
macOS 예시:
```bash
brew install libpq mariadb
echo 'export PATH="/opt/homebrew/opt/libpq/bin:$PATH"' >> ~/.zshrc
```
## 설정
```bash
cp .env.example .env
# .env 편집 (DB 접속 정보, Gitea 토큰, BACKUP_DIR)
```
주요 환경 변수:
| 변수 | 설명 |
|------|------|
| `PG_DB_*` | PostgreSQL 접속 정보 |
| `MR_DB_*` | MariaDB 접속 정보 |
| `GIT_BASE_URL` | Gitea URL (기본 `https://git.ncue.net`) |
| `GIT_USER`, `GIT_TOKEN` | Gitea mirror 인증 |
| `BACKUP_DIR` | 백업 루트 (기본 `프로젝트/backup`) |
| `BACKUP_RETENTION_DAYS` | 보관 일수 (기본 30) |
## 실행
통합 백업 (권장):
```bash
bash scripts/daily-backup.sh
```
개별 백업:
```bash
bash scripts/pg-backup.sh
bash scripts/mr-backup.sh
bash scripts/gitea-backup.sh
```
## 백업 결과 구조
```text
backup/
├─ 20260526/
│ ├─ postgresql/
│ │ ├─ 00_manifest.txt
│ │ ├─ ncue.dump
│ │ └─ ...
│ ├─ mariadb/
│ │ ├─ 00_manifest.txt
│ │ ├─ giteadb.sql.gz
│ │ └─ ...
│ └─ gitea/
│ ├─ 00_manifest.txt
│ ├─ 00_repos.json
│ └─ mirrors -> ../../_gitea_mirrors/
├─ _gitea_mirrors/ # Gitea mirror 영구 저장 (증분 업데이트)
│ └─ owner__repo.git/
└─ latest -> 20260526/
```
## 매일 cron 등록
```cron
0 2 * * * cd /home/dsyoon/workspace/ncue_backup && /usr/bin/bash scripts/daily-backup.sh >> /var/log/ncue-backup.log 2>&1
```
## 복원 참고
- PostgreSQL: `pg_restore -d dbname file.dump`
- MariaDB: `gunzip -c file.sql.gz | mysql -u user -p dbname`
- Gitea mirror: `git clone /path/to/mirrors/owner__repo.git restored-repo`
## 변경 이력
- 2026-05-26: PostgreSQL/MariaDB/Gitea 일일 백업 스크립트 초기 구성