Use /home/dsyoon/workspace paths in cron and BACKUP_DIR examples for the ncue.net backup host. Co-authored-by: Cursor <cursoragent@cursor.com>
101 lines
2.8 KiB
Markdown
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 일일 백업 스크립트 초기 구성
|