# 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 -- ```