Files
Clintchiz d402256547
Deploy to Production / Build & Verify (push) Failing after 5m56s
Ping Search Engines / Notify Search Engines (push) Successful in 2s
Deploy to Production / Pre-Deploy Tests (push) Has been skipped
Deploy to Production / Deploy to Railway (push) Has been skipped
Deploy to Production / Deploy to Render (push) Has been skipped
Deploy to Production / Deploy to VPS (PM2) (push) Has been skipped
Deploy to Production / Deploy to Fly.io (push) Has been skipped
Deploy to Production / Post-Deploy Verification (push) Has been skipped
Deploy to Production / Notify on Failure (push) Successful in 2s
E2E Test Suite / Critical User Journeys (push) Has been skipped
E2E Test Suite / API Integration Tests (push) Has been skipped
E2E Test Suite / Smoke Tests (P0) (push) Failing after 11m26s
E2E Test Suite / Form Interaction Tests (push) Failing after 11m42s
E2E Test Suite / Destructive & Chaos Tests (push) Failing after 12m2s
E2E Test Suite / Cross-Browser Regression (chromium) (push) Failing after 16m14s
E2E Test Suite / Cross-Browser Regression (webkit) (push) Failing after 17m45s
E2E Test Suite / Cross-Browser Regression (firefox) (push) Failing after 25m23s
E2E Test Suite / Security Header Tests (push) Failing after 7m55s
E2E Test Suite / Test Report Summary (push) Failing after 20s
E2E Test Suite / Mobile Device Tests (push) Failing after 2h49m9s
Uptime Monitor / Health & Response Time (push) Failing after 2s
Uptime Monitor / SSL Certificate (push) Successful in 2s
Uptime Monitor / Send Alerts (push) Failing after 3s
Uptime Monitor / Record Uptime Success (push) Has been skipped
First Init
2026-03-21 16:46:46 +05:30

411 lines
9.1 KiB
Markdown

# Backup Strategy
> Automated backup solution for WorkRoot website - file-based content, configurations, and critical assets.
---
## 📋 Overview
This backup strategy covers:
- ✅ Content files (blog posts, markdown)
- ✅ Configuration files (Astro, Tailwind, Playwright)
- ✅ Environment files (.env)
- ✅ Source code (src/, public/)
- ✅ Automated scheduling and retention
**No database** - This is a static Astro site with file-based content.
---
## 🎯 Backup Scope
### What Gets Backed Up
| Category | Files/Directories | Priority | Frequency |
|----------|------------------|----------|-----------|
| **Content** | `src/content/**/*.md` | CRITICAL | Daily |
| **Source Code** | `src/**/*` | HIGH | Daily |
| **Public Assets** | `public/**/*` | HIGH | Daily |
| **Configurations** | `*.config.{js,ts,mjs}`, `package.json` | CRITICAL | Daily |
| **Environment** | `.env`, `.env.example` | CRITICAL | On change |
| **Documentation** | `*.md`, `.agents/**/*` | MEDIUM | Weekly |
### What's Excluded
- `node_modules/` - Reinstallable via npm
- `dist/` - Build artifacts (regenerated)
- `.astro/` - Temporary build cache
- `test-results/` - Test outputs
- `.git/` - Version control handles this
---
## 🔄 Backup Types
### 1. Full Backup
**When:** Daily at 2 AM (production), on-demand (manual)
**Contains:** All files in scope
**Retention:** 7 daily, 4 weekly, 3 monthly
### 2. Incremental Backup
**When:** Every 6 hours (production)
**Contains:** Changed files only
**Retention:** 72 hours
### 3. Critical Config Backup
**When:** Before any deployment
**Contains:** Environment and config files only
**Retention:** Last 10 deployments
---
## 📅 Retention Policy
| Backup Type | Retention Period | Storage Location |
|-------------|------------------|------------------|
| **Daily** | 7 days | `backups/daily/` |
| **Weekly** | 4 weeks | `backups/weekly/` |
| **Monthly** | 3 months | `backups/monthly/` |
| **Pre-deployment** | Last 10 | `backups/pre-deploy/` |
### Storage Requirements
- **Daily:** ~50-100 MB per backup
- **Weekly:** ~500 MB total
- **Monthly:** ~1.5 GB total
- **Estimated total:** ~2.5 GB
---
## 🛠️ Automated Backup Scripts
### Location
All backup scripts are in: `scripts/backup/`
### Available Scripts
| Script | Purpose | Usage |
|--------|---------|-------|
| `backup-full.sh` | Full backup of all critical files | `npm run backup:full` |
| `backup-content.sh` | Content files only (quick) | `npm run backup:content` |
| `backup-config.sh` | Config and env files only | `npm run backup:config` |
| `restore.sh` | Restore from backup | `npm run backup:restore` |
| `cleanup-old.sh` | Remove old backups per retention policy | Auto (cron) |
---
## ⚙️ Setup Instructions
### 1. Initial Setup
```bash
# Create backup directories
mkdir -p backups/{daily,weekly,monthly,pre-deploy}
# Make scripts executable
chmod +x scripts/backup/*.sh
# Test backup
npm run backup:full
```
### 2. Configure Automated Scheduling
#### Linux/macOS (cron)
```bash
# Edit crontab
crontab -e
# Add these lines:
# Daily full backup at 2 AM
0 2 * * * cd /path/to/project && npm run backup:full
# Incremental every 6 hours
0 */6 * * * cd /path/to/project && npm run backup:content
# Weekly cleanup on Sunday at 3 AM
0 3 * * 0 cd /path/to/project && npm run backup:cleanup
```
#### Windows (Task Scheduler)
```powershell
# Create daily backup task
schtasks /create /tn "WorkRoot-DailyBackup" /tr "npm run backup:full" /sc daily /st 02:00
# Create 6-hour incremental
schtasks /create /tn "WorkRoot-IncrementalBackup" /tr "npm run backup:content" /sc hourly /mo 6
# Weekly cleanup
schtasks /create /tn "WorkRoot-CleanupBackup" /tr "npm run backup:cleanup" /sc weekly /d SUN /st 03:00
```
#### Cloud Platform (PM2 or systemd)
```bash
# Using PM2 ecosystem
pm2 start ecosystem.config.js
pm2 save
pm2 startup
```
---
## 🔧 Restoration Procedures
### Full Restore
```bash
# List available backups
npm run backup:list
# Restore from specific backup
npm run backup:restore -- backups/daily/2026-03-21.tar.gz
# Verify restoration
npm run build
npm run test
```
### Partial Restore (Content Only)
```bash
# Extract content from backup
tar -xzf backups/daily/2026-03-21.tar.gz src/content/
# Verify content
git status
```
### Emergency Recovery
If automation fails:
```bash
# Manual restore from backup file
tar -xzf /path/to/backup.tar.gz -C /recovery/location/
# Copy to project
cp -r /recovery/location/src ./
cp /recovery/location/.env ./
# Rebuild
npm install
npm run build
```
---
## 🔐 Security Best Practices
### 1. Environment Variables
-`.env` is backed up but **encrypted**
- ✅ Backups stored in secure location (not in git)
- ✅ Access restricted to DevOps team only
### 2. Backup Encryption
```bash
# Encrypt backup (recommended for cloud storage)
gpg --symmetric --cipher-algo AES256 backup.tar.gz
# Decrypt when restoring
gpg --decrypt backup.tar.gz.gpg > backup.tar.gz
```
### 3. Off-site Storage
**Recommended:** Store backups in multiple locations
| Location | Type | Purpose |
|----------|------|---------|
| **Local Server** | Primary | Fast recovery |
| **Cloud Storage** | Secondary | Disaster recovery |
| **Version Control** | Tertiary | Config files only |
Supported cloud providers:
- AWS S3
- Google Cloud Storage
- Azure Blob Storage
- Backblaze B2
---
## 📊 Monitoring & Alerts
### Backup Health Checks
```bash
# Verify latest backup
npm run backup:verify
# Check backup size and age
npm run backup:status
```
### Alert Conditions
| Condition | Action |
|-----------|--------|
| Backup fails | Email DevOps team |
| Backup > 24h old | Warning alert |
| Backup > 48h old | Critical alert |
| Storage > 80% full | Cleanup required |
---
## 🧪 Testing Restoration
**CRITICAL:** Test backups monthly
```bash
# Monthly drill procedure
1. Create test environment
2. Restore from last week's backup
3. Run build and tests
4. Verify content loads correctly
5. Document any issues
# Quick test (every backup)
npm run backup:verify
```
---
## 📝 Pre-Deployment Backup
**Always backup before deployment!**
```bash
# Automatic (included in deployment script)
npm run deploy # Runs backup:config automatically
# Manual pre-deployment backup
npm run backup:pre-deploy
```
---
## 🆘 Troubleshooting
### Backup Fails
```bash
# Check disk space
df -h
# Check permissions
ls -la backups/
# Verify scripts are executable
ls -la scripts/backup/
```
### Restore Fails
```bash
# Verify backup integrity
tar -tzf backup.tar.gz
# Check for corruption
gzip -t backup.tar.gz
```
### Missing Files After Restore
```bash
# Compare with backup contents
tar -tzf backup.tar.gz | grep "missing-file"
# Check exclusions in backup script
cat scripts/backup/backup-full.sh
```
---
## 📞 Emergency Contacts
| Role | Responsibility | Contact |
|------|----------------|---------|
| **DevOps Lead** | Backup system owner | [Contact info] |
| **Platform Admin** | Server access, storage | [Contact info] |
| **Tech Lead** | Code verification post-restore | [Contact info] |
---
## 🔄 Backup Lifecycle
```
┌─────────────────┐
│ Trigger Event │ (Cron, Manual, Pre-deploy)
└────────┬────────┘
┌─────────────────┐
│ Run Backup │ (Full, Incremental, Config)
└────────┬────────┘
┌─────────────────┐
│ Compress & │ (tar.gz, optional encryption)
│ Archive │
└────────┬────────┘
┌─────────────────┐
│ Store Locally │ (backups/daily|weekly|monthly/)
└────────┬────────┘
┌─────────────────┐
│ Sync to Cloud │ (Optional: S3, GCS, Azure)
└────────┬────────┘
┌─────────────────┐
│ Verify Backup │ (Size, integrity check)
└────────┬────────┘
┌─────────────────┐
│ Cleanup Old │ (Per retention policy)
└─────────────────┘
```
---
## ✅ Checklist
### Setup Checklist
- [ ] Backup directories created
- [ ] Scripts installed and executable
- [ ] Cron jobs / Task Scheduler configured
- [ ] Cloud storage configured (if using)
- [ ] Email alerts set up
- [ ] First full backup completed
- [ ] Restore tested successfully
### Monthly Maintenance
- [ ] Test restoration procedure
- [ ] Verify backup integrity
- [ ] Check storage usage
- [ ] Review retention policy
- [ ] Update documentation
- [ ] Train team on procedures
---
## 📚 Related Documentation
- [DEPLOYMENT.md](../../DEPLOYMENT.md) - Deployment procedures
- [MIGRATION-CHECKLIST.md](../documentation-writer/MIGRATION-CHECKLIST.md) - Domain migration
- [Security Audit](../security-auditor/SECURITY-AUDIT.md) - Security configurations
---
**Last Updated:** 2026-03-21
**Version:** 1.0
**Maintained by:** DevOps Team