Files
CompanySite/.agents/devops-engineer/BACKUP_STRATEGY.md
T
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

9.1 KiB

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

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

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

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

# Using PM2 ecosystem
pm2 start ecosystem.config.js
pm2 save
pm2 startup

🔧 Restoration Procedures

Full Restore

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

# Extract content from backup
tar -xzf backups/daily/2026-03-21.tar.gz src/content/

# Verify content
git status

Emergency Recovery

If automation fails:

# 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

# 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

# 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

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

# Automatic (included in deployment script)
npm run deploy  # Runs backup:config automatically

# Manual pre-deployment backup
npm run backup:pre-deploy

🆘 Troubleshooting

Backup Fails

# Check disk space
df -h

# Check permissions
ls -la backups/

# Verify scripts are executable
ls -la scripts/backup/

Restore Fails

# Verify backup integrity
tar -tzf backup.tar.gz

# Check for corruption
gzip -t backup.tar.gz

Missing Files After Restore

# 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


Last Updated: 2026-03-21 Version: 1.0 Maintained by: DevOps Team