Files
traceability/DATA-BACKUP-GUIDE.md
2026-02-03 20:48:09 +01:00

123 lines
2.9 KiB
Markdown

# Data Backup and Restore Guide
## Overview
Your traceability application uses Docker volumes for persistent data storage. Data survives container restarts, updates, and redeployments automatically.
## Data Location
- **Docker Volume**: `traceability_traceability_data`
- **Backup Directory**: `/opt/traceability-backups`
- **Data Files**: JSON files stored in the volume
- `auth.json` - User accounts and authentication
- `budget.json` - Transactions, founders, settings, targets
- `planning.json` - Sprints, tasks, comments, time logs
- `documentation.json` - Documents and categories
## Backup Commands
### Create a Backup
```bash
cd /opt/traceability
./deploy.sh --backup
```
### Manual Backup
```bash
mkdir -p /opt/traceability-backups
docker run --rm \
-v traceability_traceability_data:/data \
-v /opt/traceability-backups:/backup \
alpine tar -czf /backup/backup_$(date +%Y%m%d_%H%M%S).tar.gz -C /data .
```
## Restore Commands
### Restore from Backup
```bash
cd /opt/traceability
./deploy.sh --restore /opt/traceability-backups/backup_YYYYMMDD_HHMMSS.tar.gz
```
### Manual Restore
```bash
docker run --rm \
-v traceability_traceability_data:/data \
-v /opt/traceability-backups:/backup \
alpine sh -c "rm -rf /data/* && tar -xzf /backup/backup_YYYYMMDD_HHMMSS.tar.gz -C /data"
```
## Deployment with Data Preservation
### Standard Deployment (with automatic backup)
```bash
cd /opt/traceability
./deploy.sh
```
### Quick Deployment (skip backup)
```bash
./deploy.sh --skip-backup
```
## Data Migration
### Export Data from One Server
```bash
# On source server
./deploy.sh --backup
scp /opt/traceability-backups/backup_*.tar.gz user@new-server:/tmp/
```
### Import Data to New Server
```bash
# On destination server
./deploy.sh --restore /tmp/backup_YYYYMMDD_HHMMSS.tar.gz
./deploy.sh --skip-backup
```
## Automatic Backups (Cron)
Add to crontab for daily backups:
```bash
# Edit crontab
crontab -e
# Add this line for daily backup at 2 AM
0 2 * * * /opt/traceability/deploy.sh --backup >> /var/log/traceability-backup.log 2>&1
```
## Viewing Data
### Inspect Volume Contents
```bash
docker run --rm -v traceability_traceability_data:/data alpine ls -la /data
```
### View Specific Data File
```bash
docker run --rm -v traceability_traceability_data:/data alpine cat /data/auth.json
```
## Troubleshooting
### Data Not Persisting
1. Check if volume exists: `docker volume ls | grep traceability`
2. Inspect volume: `docker volume inspect traceability_traceability_data`
3. Check data service logs: `docker logs data_service`
### Restore Failed
1. Ensure backup file exists and is readable
2. Stop services first: `docker compose down`
3. Try manual restore (see above)
4. Restart services: `docker compose up -d`
### Volume Full
```bash
# Check volume size
docker system df -v
# Clean old backups
ls -t /opt/traceability-backups/backup_*.tar.gz | tail -n +11 | xargs rm --
```