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:
- Rclone Provisioning: If Rclone is not installed, CtrlOps fetches the latest binary for your architecture.
- Remote Configuration: A unique
rclone.confis managed on the server, isolating backup credentials. - Internal Scheduler: Jobs are managed via an internal Rust-based timer or a standard system
cronjob for persistent scheduling. - 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
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 weeklyDatabase (Large)
Hourly: Transaction logs
Daily: Full dump at 1 AM
Weekly: Compressed archive Sunday
Retain: 24 hourly, 7 daily, 4 weeklySystem (Critical)
Daily: /etc, /home (incremental)
Weekly: Full system (Sunday 4 AM)
Monthly: Archive (1st of month)
Retain: 30 daily, 8 weekly, 12 monthlyStorage Destinations
Local Storage
Setup:
# Mount external drive
sudo mount /dev/sdb1 /mnt/backup
# Set permissions
sudo chown $(whoami):$(whoami) /mnt/backupPros: Fast, cheap, private Cons: Single point of failure, limited capacity
Remote Server
Setup:
- Add remote server to CtrlOps
- Use as backup destination
- 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/backupsPros: 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 sizeEncryption
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 mysqlNotifications
Get alerted when:
- ✅ Backup completes successfully
- ❌ Backup fails
- ⚠️ Storage running low
- 🕐 Backup overdue
Channels:
- Slack
- Webhook
- Push notification
Restoration
Full Restore
- Go to Backup > Restore
- Select backup job
- Choose restore point (date/time)
- Select destination:
- Original location
- New location
- Download as archive
- Click "Restore"
Selective Restore
Restore specific files:
- Browse backup archive
- Select files/folders
- Choose restore location
- Restore
Database Restoration
MySQL example:
# From backup tab
mysql -u root -p database < backup.sql
# Or use CtrlOps UI
# Select database backup → Restore → ConfirmPoint-in-Time Recovery
For databases with transaction logs:
- Restore last full backup
- Apply incremental logs
- 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:
- Monthly: Restore to test server
- Verify data integrity
- Check application functionality
- 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
-
3-2-1 Rule:
- 3 copies of data
- 2 different media types
- 1 offsite backup
-
Regular Testing:
- Test restore monthly
- Document procedures
- Train team members
-
Monitor & Alert:
- Check backup logs
- Set up notifications
- Review storage usage
-
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.