CtrlOps
|Docs
Product Modules

Backups

Schedule automatic backups of your server files to S3, without writing a single script.

Backups give you peace of mind. Set them up once, and CtrlOps will quietly copy your files to S3 on the schedule you pick. If something ever goes wrong on the server, you'll have a recent copy ready to go.

What you can do here

  • Create backup jobs that copy a folder from your server to S3.
  • Run a backup right now, or schedule it (daily, weekly, monthly, yearly, or a custom cron).
  • Watch progress live, with speed, files transferred, and time remaining.
  • Open the full log of any run to see exactly what happened.
  • Edit, delete, or stop a backup that's already running.

Today CtrlOps backs up from your server to S3 (AWS, Cloudflare R2, Backblaze B2, Wasabi, MinIO, DigitalOcean Spaces). More destinations are on the way.

Before you start

You'll need a few things in place. Don't worry, CtrlOps shows you a banner whenever something is missing and gives you a one-click install.

RequirementWhy you need itWhat to do if it's missing
Active server connectionBackups run on the server you're connected toOpen the server from the Home page first
Rclone (on the server)The tool that moves your files to S3Click Install Rclone in the yellow banner
Cron (only for scheduled jobs)Triggers backups on a scheduleClick Install Cron, then Start Cron Service if it's stopped
S3 bucket and access keysThe destination for your filesCreate them in your cloud provider's console

If you only ever back up "right now" with one click, you can skip cron entirely. Cron is only required when you want backups to run on a schedule.

Set up your first backup job

Open the Backup tab

Open app → Click your server → Click the Backup tab

Open the create form

Click Create Job (top right of the Backup Configuration row)

Fill in the basics

In the Basic Information card, fill in these fields:

FieldWhat to enter
Job NameA name you'll recognise later, like daily-website or mysql-monthly. Letters, numbers, and underscores only.
Source PathThe folder on the server you want to back up, for example /var/www/html or /home/user/documents.
Destination TypeSelect S3-Compatible Storage.
Transfer TypeSync mirrors the source exactly (deletes anything at the destination that no longer exists at the source). Copy only adds files.

Add your S3 details

In the Destination Configuration card, fill in your S3 settings:

FieldWhat to enter
ProviderThe service you use: AWS S3, MinIO, Wasabi, DigitalOcean Spaces, Backblaze B2, or Cloudflare R2.
RegionRequired for AWS (e.g. us-east-1). Optional for most other providers.
Access KeyYour S3 access key. Stored encrypted.
Secret KeyYour S3 secret key. Stored encrypted.
Bucket NameThe bucket your files will go into.
Remote PathOptional. A folder inside the bucket, like /server1/backups.
Custom EndpointOnly for providers that need it (MinIO, R2, etc.). Leave empty for AWS.
Storage ClassOptional. Use Standard for fast access, or Glacier / Deep Archive for cheap long-term storage.
Use IAM RoleToggle on if your server already has IAM permissions, so you can skip Access Key and Secret Key.

Choose when it should run

In the Schedule Configuration card, pick one option:

OptionWhen to pick it
ManualBackups only run when you click Run Backup. No cron needed.
IntervalRecurring schedule. Pick how often (Daily, Weekly, Monthly, Yearly), the time of day, and the day if it applies.
CustomWrite your own cron expression (Minute, Hour, Day, Month, Weekday). Each field accepts a number, a range, or * for "every".

Times use the server's timezone, not yours. Double-check the server time if a 2:00 AM backup needs to run at your 2 AM.

(Optional) Tune the advanced options

You can skip this. The defaults work for most setups.

FieldWhat it doesDefault
TransfersHow many files upload in parallel. Range 1 to 32.4
CheckersThreads used to verify files. Range 1 to 32.8
Bandwidth LimitCap upload speed, e.g. 10M, 100M, 1G. Leave empty for full speed.(none)

Test the connection

Click Test Connection (bottom of the form)

CtrlOps tries to reach your bucket with the keys you entered. If something is wrong, you'll see the error right away. Fix it before saving.

Save the job

Click Create

Your new job appears in the table. It won't run yet unless you scheduled it or trigger it manually.

Run a backup right now

Find your job

Open the Backup tab → Locate the job in the table

Each job has three round buttons on the right: Run Backup (play icon), Edit (pencil icon), Delete (trash icon).

Trigger the run

Click Run Backup (play icon)

The status flips to RUNNING and a small progress bar appears. The job is now copying files in the background. You can switch tabs and come back.

(Optional) Watch progress

Click the row to expand it

A live panel slides open showing how much has been transferred, file count, current speed, and rough time remaining.

Watch a backup in progress

When you expand a running job, the Backup Progress panel updates in real time:

StatWhat it shows
Size TransferredHow many MB or GB have moved so far
Files TransferredFiles done out of the total
Transfer SpeedCurrent rate, like 5.2 MB/s
ETARough time until finish
Elapsed TimeHow long the run has been going

If anything goes wrong mid-run, like a permission error on a single file, you'll see a red alert with the list of errors. No need to dig through logs to spot them.

To abort a running backup: Expand the row → Click Kill This Process → Confirm. The current run stops, the job stays in the list, and you can re-run it later.

Open the log of a run

Expand the job row → Click View Log

A modal opens with the raw, terminal-style output from the backup engine. This is where to look when:

  • A backup says it failed and you want to know why.
  • You want to confirm a specific file was included.
  • Something looks slow and you want to find the bottleneck.

The log is read-only. Scroll through it, and copy any text you need to share.

Manage existing jobs

ActionHow
EditClick the pencil icon on the job row. Useful for rotating credentials or moving the destination.
DeleteClick the trash icon and confirm. The job is removed. Existing backup files at the destination are not touched.
RefreshClick Refresh at the top right of the table to re-pull the latest job statuses.

You can't edit or delete a job while it's running. Stop it first with Kill This Process.

Tips

Name jobs by what they back up, not by the date. daily-mysql-prod ages well, backup-april-2026 does not.

Test the connection before you save. A two-second test now beats discovering at 3 AM that a typo in your bucket name broke a week of backups.

Store backups somewhere far from your server. A local folder on the same disk as your data won't help if the disk dies. Pick a different cloud region, or a different provider entirely.

Troubleshooting