123 lines
2.9 KiB
Markdown
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 --
|
|
```
|