Backup Not Running
Diagnose CtrlOps backup jobs that fail to start, crash mid-run, or miss their schedule. Fix S3 credentials, permissions, and cron issues.
A backup job that doesn't run is worse than no backup, you think you're covered, but you aren't. This page walks through the symptoms you'll see in the Backup tab, and the exact fix for each one.
CtrlOps backs up from your server to S3-compatible storage today (AWS, Cloudflare R2, Backblaze B2, Wasabi, MinIO, DigitalOcean Spaces). SFTP and Local destinations are not supported in the current release.
Why Backup Jobs Fail and How to Fix Them
- Banners at the top of the tab (rclone, cron, shell) and what each one means.
- "Test Connection" failures and how to read them.
- Backups that succeed but copy zero files.
- Scheduled backups that never trigger.
- Live runs that stall, fail mid-way, or run too slowly.
First, scan the top of the Backup tab
Whenever something breaks, the Backup tab shows you why. Before opening any specific job, look for one of these alert banners:
| Banner | What it means | One-click fix |
|---|---|---|
| "Rclone Not Installed" (yellow) | The tool that copies files isn't on the server | Click Install Rclone |
| "Cron is required for scheduled backups..." | Cron isn't installed; only manual backups will run | Click Install Cron |
| "Cron is installed but the service is not running" | Cron exists but is stopped | Click Start Cron Service |
| "Backup Shell Disconnected" | The session managing backups dropped | Click Reconnect |
If a banner is showing, fix it first. Most "backup didn't run" cases are one of these four.
Common problems and fixes
You filled in the form, clicked Test Connection, and got an error. The four most common causes, in order:
- Wrong region. AWS strictly requires the region to match the bucket. Look up the bucket in the S3 console and copy the region exactly (e.g.
us-east-1). - Typo in bucket name. Bucket names are case-sensitive on most providers. Re-paste from the provider's console.
- Access key without permission to write. The IAM policy on the access key needs at least
s3:PutObject,s3:GetObject,s3:ListBucket, ands3:DeleteObjectfor the bucket. - Custom endpoint missing or wrong. For Cloudflare R2, MinIO, Wasabi, and other S3-compatible providers, the Custom Endpoint field is required. Leave it empty for AWS.
Fix the field, click Test Connection again before saving.
The job didn't fail, it just had nothing to copy. This almost always means the Source Path is wrong or empty.
Open the View Log modal (expand the job → click View Log). Look for the line:
Transferred: 0 B / 0 B, -, 0 B/s, ETA -If you see Transferred: 0, the source path is the culprit.
Common causes:
- A typo, like
/var/wwwwinstead of/var/www. - The path exists but the user CtrlOps logs in as can't read it (try
ls -la <path>from the AI Terminal). - The folder is empty.
Fix: click Edit on the job, correct the Source Path, save, and run again.
You set a schedule (Interval or Custom), but nothing has run automatically.
Check, in order:
-
Is cron running? Open the Backup tab and look for the "Cron service is not running" alert. Click Start Cron Service. To confirm the entry actually exists on the server, open the Cron Jobs tab, which lists every crontab entry including the ones CtrlOps wrote.
-
Did you save the schedule? Click Edit on the job and confirm the Schedule Type is Interval or Custom, not Manual.
-
Is the time correct in the server's timezone? The job runs on the server's clock, not yours. From the AI Terminal:
date timedatectlIf the timezone is wrong, fix it:
sudo timedatectl set-timezone Asia/Kolkata(or whichever zone is correct). -
Is the cron expression valid? For Custom schedules, a typo in any field breaks the whole job. Stick to digits, ranges, or
*per field.
Two cases are easy to miss:
'Permission denied' on the source: the user doesn't have read access to part of the source. Pick a subdirectory the user owns, or in the AI Terminal:
sudo chown -R <user>:<user> /path/to/sourceDisk full on the source: rclone needs a tiny amount of working space, and a 100% full disk breaks it. Open the Infrastructure Details tab and check the Storage card. If it's red, click Clean Disk Space and retry the backup.
Two settings to tune in the Advanced Options card of the job form:
- Bandwidth Limit, if it's set, raise it or remove it. Empty means full speed.
- Transfers, how many files upload in parallel. Default is
4. Bump to8or16for many small files; lower if your provider is throttling.
Other common causes:
- The provider is rate-limiting your account. S3 throughput is generous but capped. Check the provider's docs.
- Your server's outbound bandwidth is small. Run
speedtest-clifrom the AI Terminal to measure. A 10 Mbps server can't push backups at 100 MB/s no matter the settings. - Many tiny files. Backing up
node_modulesis slow because rclone has to handshake on every file. If you don't need them, exclude them from the source path.
A run that's been RUNNING for far longer than it should can be killed.
Expand the job row → Click Kill This Process → Confirm
The current run stops, the job stays in the table, and you can re-run it. If kill doesn't work because the shell session is gone, look for the "Backup Shell Disconnected" banner and click Reconnect.
If the same job hangs every time, the issue is usually network: a dead route to the bucket, a misbehaving proxy, or DNS resolving to the wrong endpoint. Test from the AI Terminal:
curl -v https://your-bucket.s3.your-region.amazonaws.com/You should see a quick HTTP response (any status code is fine, even 403 means the network works).
The View Log shows exactly what was transferred. Expand the job → click View Log → look for the summary lines at the bottom:
Transferred: 2.345 GiB / 2.345 GiB, 100%, 12.345 MiB/s, ETA 0s
Errors: 0
Checks: 423 / 423, 100%
Transferred: 87 / 87, 100%
Elapsed time: 3m12.4sA clean run shows zero errors and matching counts. If Errors: is non-zero, the same number of files failed and the log lists each one earlier.
For peace of mind on critical data, run a small test restore once a month: download a few files from the bucket using your provider's console and confirm they open.
The job definition is gone, but the backup files at the destination are not touched when you delete a job. Your data in S3 is safe.
To re-create the job, click Create Job again with the same source path, destination, and credentials. The next run will sync against the existing backup files (with Sync) or add to them (with Copy).
The job is currently running. You can't edit a running job; stop it first:
Expand the row → Click Kill This Process → Confirm
After the run stops, Edit and Delete become available again.
The shell session may have dropped. Look for the "Backup Shell Disconnected" alert at the top of the tab and click Reconnect. Then click Refresh again.
If the alert isn't showing but Refresh still shows stale data, switch to another tab and back; the stat cards reload on tab focus.
Quick checks before you ask for help
Most "the backup didn't run" reports turn out to be one of these:
| Symptom | Quick check |
|---|---|
| Nothing has run automatically | Cron alert at the top of the tab |
| One job fails, others succeed | Click the failing job and View Log |
| Test Connection fails | Region, bucket name, access key permissions |
| Backup ran but bucket is empty | Source path typo; log shows Transferred: 0 |
| Job hangs forever | Kill This Process, then check network to S3 |
When all else fails: gather details and ask
Before you reach out, collect:
| Info | Where to find it |
|---|---|
| Job name and the failing run's log | Expand the row → View Log → copy the text |
| Destination type and provider | The job's Destination Configuration card |
| Approximate timestamp of the failure | From the row's status |
| Server's date / timezone output | From the AI Terminal: timedatectl |
| Any banner currently showing on the tab | Top of the Backup tab |
Then bring it to:
- Discord community: Join Discord
- AI Assistant inside CtrlOps, paste the log and ask "why did this fail?". Rclone messages are dense but well-structured, the AI is good at translating them.
A failed backup is the same as no backup. Don't ignore the red status indicator, fix the cause and verify with a manual run before going back to your day.
AI Not Responding
Fix the CtrlOps AI Assistant when it won't reply, refuses commands, or returns errors. Diagnose API keys, model settings, network issues, and rate limits.
Connection Issues
Fix SSH connection failures in CtrlOps. Diagnose timeouts, key errors, firewall rules, and security groups for AWS, GCP, Azure, DigitalOcean - in minutes.