Initial vault-backup project
- R2 백업 스크립트 (Raft 스냅샷 + fallback) - 경로 기반 백업 스크립트 - 환경변수 템플릿 - README 문서 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
98
README.md
Normal file
98
README.md
Normal file
@@ -0,0 +1,98 @@
|
||||
# Vault Backup to Cloudflare R2
|
||||
|
||||
HashiCorp Vault 시크릿을 Cloudflare R2에 자동 백업하는 도구
|
||||
|
||||
## 구조
|
||||
|
||||
```
|
||||
vault-backup/
|
||||
├── scripts/
|
||||
│ ├── vault-backup-r2.sh # 전체 백업 (Raft 스냅샷 + fallback)
|
||||
│ └── vault-backup-mcp.sh # 경로 기반 백업
|
||||
├── docs/
|
||||
├── old-backups/ # 기존 로컬 백업
|
||||
├── .env.example # 환경변수 예제
|
||||
└── README.md
|
||||
```
|
||||
|
||||
## 요구사항
|
||||
|
||||
- `curl`, `jq`, `aws` CLI
|
||||
- Cloudflare R2 API 토큰
|
||||
- Vault 접근 토큰
|
||||
|
||||
## 설정
|
||||
|
||||
### 1. 환경변수 설정
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
vi .env
|
||||
```
|
||||
|
||||
### 2. R2 API 토큰 생성
|
||||
|
||||
1. [Cloudflare Dashboard](https://dash.cloudflare.com) → R2
|
||||
2. **Manage R2 API Tokens** → **Create API Token**
|
||||
3. 권한: `Object Read & Write`
|
||||
4. 버킷: `vault-backup`
|
||||
|
||||
### 3. Account ID 확인
|
||||
|
||||
Cloudflare Dashboard → 우측 하단 **Account ID** 복사
|
||||
|
||||
## 사용법
|
||||
|
||||
### 수동 백업
|
||||
|
||||
```bash
|
||||
source .env
|
||||
./scripts/vault-backup-r2.sh
|
||||
```
|
||||
|
||||
### 자동 백업 (Cron)
|
||||
|
||||
```bash
|
||||
# 매일 새벽 3시 백업
|
||||
0 3 * * * cd ~/vault-backup && source .env && ./scripts/vault-backup-r2.sh >> logs/backup.log 2>&1
|
||||
```
|
||||
|
||||
### 특정 이름으로 백업
|
||||
|
||||
```bash
|
||||
./scripts/vault-backup-r2.sh my-custom-backup-name
|
||||
```
|
||||
|
||||
## 백업 방식
|
||||
|
||||
| 스크립트 | 방식 | 용도 |
|
||||
|----------|------|------|
|
||||
| `vault-backup-r2.sh` | Raft 스냅샷 우선, 실패시 시크릿 export | 전체 백업 |
|
||||
| `vault-backup-mcp.sh` | 지정된 경로만 백업 | 선택적 백업 |
|
||||
|
||||
## 환경변수
|
||||
|
||||
| 변수 | 설명 | 기본값 |
|
||||
|------|------|--------|
|
||||
| `VAULT_ADDR` | Vault 서버 주소 | - |
|
||||
| `VAULT_TOKEN` | Vault 인증 토큰 | - |
|
||||
| `R2_ACCOUNT_ID` | Cloudflare Account ID | - |
|
||||
| `R2_ACCESS_KEY` | R2 Access Key ID | - |
|
||||
| `R2_SECRET_KEY` | R2 Secret Access Key | - |
|
||||
| `R2_BUCKET` | R2 버킷 이름 | `vault-backup` |
|
||||
| `RETENTION_DAYS` | 백업 보존 기간 (일) | `30` |
|
||||
|
||||
## 복원
|
||||
|
||||
```bash
|
||||
# R2에서 다운로드
|
||||
aws s3 cp s3://vault-backup/vault-snapshot-YYYYMMDD-HHMMSS.snap ./restore.snap \
|
||||
--endpoint-url https://<ACCOUNT_ID>.r2.cloudflarestorage.com
|
||||
|
||||
# Vault 복원 (Raft)
|
||||
vault operator raft snapshot restore restore.snap
|
||||
```
|
||||
|
||||
## 라이선스
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user