Overview
Regular backups are essential to protect against data loss, hardware failure, and security incidents. This guide covers comprehensive backup strategies for all Wecode components.What to Back Up
Critical Data (Must Back Up)
- Database - All user data, submissions, grades
- Assignments Folder - Student-submitted code files
- Configuration Files -
.env, custom configs - Tester Folder - Test cases and grading scripts
Important Data (Should Back Up)
- Storage Folder - Logs, uploaded files, cache
- Custom Code - Any modifications to Wecode core
- Web Server Configuration - Nginx/Apache configs
Optional Data
- Vendor Folder - Can be regenerated with
composer install - Node Modules - Can be regenerated with
npm install - Compiled Assets - Can be regenerated with build commands
Database Backup
Manual Database Backup
MySQL/MariaDB
PostgreSQL
Automated Database Backup Script
Create/usr/local/bin/wecode-db-backup.sh:
Schedule Database Backups with Cron
Assignments Folder Backup
Theassignments folder contains all student-submitted code and grows over time.
Manual Backup
Automated Backup Script
Create/usr/local/bin/wecode-files-backup.sh:
Configuration Files Backup
Files to Back Up
Configuration Backup Script
Create/usr/local/bin/wecode-config-backup.sh:
Complete System Backup
Full Backup Script
Create/usr/local/bin/wecode-full-backup.sh:
Remote Backup Storage
Rsync to Remote Server
Amazon S3 Backup
Database Restore
MySQL/MariaDB Restore
PostgreSQL Restore
Safe Restore Procedure
Files Restore
Restore Assignments Folder
Restore Configuration
Docker Compose Backup/Restore
Backup Docker Volumes
Restore Docker Volumes
Backup Verification
Test Database Backup
Verify File Backup
Backup Monitoring
Check Backup Status Script
Create/usr/local/bin/check-wecode-backups.sh:
Disaster Recovery Plan
Complete System Recovery Steps
-
Install Base System
-
Restore Database
-
Restore Application Files
-
Restore Data Folders
-
Set Permissions
-
Install Dependencies
-
Verify and Start
Best Practices
- 3-2-1 Rule: 3 copies, 2 different media, 1 offsite
- Test Restores: Regularly verify backups can be restored
- Automate: Use cron for automatic backups
- Monitor: Check backup logs daily
- Encrypt: Encrypt backups containing sensitive data
- Document: Keep restore procedures updated
- Retention: Keep daily (7 days), weekly (4 weeks), monthly (12 months)
Next Steps
- Configure Update Procedures
- Review Troubleshooting Guide
- Set up Monitoring and Alerts

