CtrlOps
|Docs
Product Modules

Backup & Restore

Automating backups and managing restore points

Protect your data with automated backups. Schedule regular snapshots, manage retention policies, and restore quickly when needed.

Technical Implementation

CtrlOps uses Rclone as its core backup engine, providing high-performance synchronization with over 40 cloud providers.

The Backup Engine

When you configure a backup job, CtrlOps manages the following technical flow:

  1. Rclone Provisioning: If Rclone is not installed, CtrlOps fetches the latest binary for your architecture.
  2. Remote Configuration: A unique rclone.conf is managed on the server, isolating backup credentials.
  3. Internal Scheduler: Jobs are managed via an internal Rust-based timer or a standard system cron job for persistent scheduling.
  4. Bandwidth Control: Transfers are optimized to avoid saturating your server's network during peak hours.

Supported Providers

CtrlOps provides native support for:

  • AWS S3 & Compatible (DigitalOcean, Wasabi, Minio)
  • Google Drive & Google Cloud Storage
  • Dropbox
  • SND (CtrlOps Managed)
  • Backblaze B2
  • Microsoft OneDrive / Azure Blob

Creating Your First Backup Job

Step-by-Step Setup

Open Backup Manager

Navigate to the "Backup" tab in CtrlOps.

Click "New Backup Job"

Give your job a descriptive name:

  • "Daily Website Backup"
  • "Weekly Database Dump"
  • "Monthly Full System"

Select What to Backup

Choose sources:

  • Files/Directories: /var/www, /home/user/data
  • Databases: MySQL, PostgreSQL, MongoDB
  • System configs: /etc/nginx, /etc/apache2
  • Applications: Docker volumes, custom apps

Choose Destination

Where to store backups:

  • Local storage: Secondary disk, NAS
  • Remote server: SFTP to another server
  • Cloud storage: S3, Google Cloud, Azure
  • CtrlOps Cloud: Managed storage (easiest)

Set Schedule

How often to run:

  • Hourly: Critical databases
  • Daily: Websites, applications
  • Weekly: Full system images
  • Monthly: Archival snapshots

Configure Retention

How long to keep backups:

  • Keep last 7 daily backups
  • Keep last 4 weekly backups
  • Keep last 12 monthly backups
  • Auto-delete older backups

Test the Connection

Click "Test Backup" to:

  • Verify destination access
  • Check disk space
  • Measure transfer speed
  • Validate permissions

Save and Activate

Click "Save Job" and toggle "Active".

Your first backup runs immediately!

Backup Methods

Incremental Backups

Only backs up changed files since last backup.

Pros:

  • Fast (minutes, not hours)
  • Uses less storage
  • Less bandwidth

Cons:

  • Requires full backup first
  • Complex restore (need full + increments)

Best for: Frequent backups of large datasets

Full Backups

Copies everything every time.

Pros:

  • Simple restore (single file)
  • Complete independence
  • Easier verification

Cons:

  • Slower
  • More storage needed

Best for: Weekly/monthly archives

Differential Backups

Backs up changes since last full backup.

Pros:

  • Faster than full
  • Only need full + latest differential

Cons:

  • Grows larger over time

Best for: Mid-frequency backups

Scheduling Examples

Website (Small)

Daily:   Incremental at 2 AM
Weekly:  Full backup on Sunday at 3 AM
Retain:  14 daily, 4 weekly

Database (Large)

Hourly:  Transaction logs
Daily:   Full dump at 1 AM
Weekly:  Compressed archive Sunday
Retain:  24 hourly, 7 daily, 4 weekly

System (Critical)

Daily:   /etc, /home (incremental)
Weekly:  Full system (Sunday 4 AM)
Monthly: Archive (1st of month)
Retain:  30 daily, 8 weekly, 12 monthly

Storage Destinations

Local Storage

Setup:

# Mount external drive
sudo mount /dev/sdb1 /mnt/backup

# Set permissions
sudo chown $(whoami):$(whoami) /mnt/backup

Pros: Fast, cheap, private Cons: Single point of failure, limited capacity

Remote Server

Setup:

  1. Add remote server to CtrlOps
  2. Use as backup destination
  3. Credentials stored securely

Pros: Geographic separation, reliable Cons: Requires second server, bandwidth costs

Cloud Storage (S3)

Setup:

Provider: AWS S3
Bucket: my-backup-bucket
Region: us-east-1
Access Key: AKIA...
Secret Key: ****
Path: /server1/backups

Pros: Infinite scale, durable (99.999999999%), pay-as-you-go Cons: Ongoing costs, requires internet

Cost estimation:

  • 100 GB storage: ~$2.30/month
  • 100 GB download: ~$9.00 (restore)

CtrlOps Managed Storage

Easiest option — we handle everything:

  • Automatic encryption
  • Geo-redundant copies
  • Instant restoration
  • Flat monthly fee

Plans:

  • Starter: 50 GB ($5/month)
  • Pro: 500 GB ($25/month)
  • Enterprise: 5 TB ($150/month)

Advanced Features

Compression

Reduce backup size by 50-80%:

Compression Level: Normal | High | Maximum

Normal:  Fast, moderate compression
High:    Slower, better compression  
Maximum: Slowest, smallest size

Encryption

Protect sensitive backups:

Encryption: AES-256
Password: ************
Key File: (optional)

Important: Don't lose your encryption password! Without it, backups are unrecoverable.

Pre/Post Scripts

Run commands before/after backup:

# Pre-backup: Stop services
#!/bin/bash
systemctl stop mysql
systemctl stop nginx

# Post-backup: Restart services  
#!/bin/bash
systemctl start nginx
systemctl start mysql

Notifications

Get alerted when:

  • ✅ Backup completes successfully
  • ❌ Backup fails
  • ⚠️ Storage running low
  • 🕐 Backup overdue

Channels:

  • Email
  • Slack
  • Webhook
  • Push notification

Restoration

Full Restore

  1. Go to Backup > Restore
  2. Select backup job
  3. Choose restore point (date/time)
  4. Select destination:
    • Original location
    • New location
    • Download as archive
  5. Click "Restore"

Selective Restore

Restore specific files:

  1. Browse backup archive
  2. Select files/folders
  3. Choose restore location
  4. Restore

Database Restoration

MySQL example:

# From backup tab
mysql -u root -p database < backup.sql

# Or use CtrlOps UI
# Select database backup → Restore → Confirm

Point-in-Time Recovery

For databases with transaction logs:

  1. Restore last full backup
  2. Apply incremental logs
  3. Stop at specific timestamp

Example: "Restore database to April 13, 2:30 PM"

Monitoring & Maintenance

Health Dashboard

Backup Status
━━━━━━━━━━━━━━━━━━━━━━━━━━━
✓ Website Files     Last: Today 2:00 AM  Size: 1.2 GB
✓ MySQL Database    Last: Today 2:15 AM  Size: 450 MB
⚠ Server Configs    Last: 2 days ago    Size: 12 MB
✗ User Uploads      FAILED: Disk full
━━━━━━━━━━━━━━━━━━━━━━━━━━━

Testing Backups

Regular restore tests:

  1. Monthly: Restore to test server
  2. Verify data integrity
  3. Check application functionality
  4. Document any issues

Cleanup

Automated maintenance:

  • Delete expired backups
  • Compact old archives
  • Verify checksums
  • Rebuild indexes

Troubleshooting

"Backup failed: Disk full"

  • Clean old backups
  • Reduce retention period
  • Use compression
  • Add more storage

"Permission denied"

  • Check destination permissions
  • Verify SSH key access
  • Try with sudo
  • Check SELinux/AppArmor

"Connection timeout"

  • Check network connectivity
  • Increase timeout settings
  • Use resume capability
  • Schedule off-peak

"Corrupted backup"

  • Verify checksums
  • Check disk health
  • Re-run backup
  • Test restoration

Best Practices

  1. 3-2-1 Rule:

    • 3 copies of data
    • 2 different media types
    • 1 offsite backup
  2. Regular Testing:

    • Test restore monthly
    • Document procedures
    • Train team members
  3. Monitor & Alert:

    • Check backup logs
    • Set up notifications
    • Review storage usage
  4. Document Everything:

    • What's backed up
    • Where it's stored
    • How to restore
    • Who has access

Remember: Backups are insurance. You hope you never need them, but you'll be glad you have them when disaster strikes.

On this page