VPS Snaps

Understanding cron schedules

How to write cron expressions for your backup schedule.

4 min readScheduling

The dashboard's schedule dropdown (Manual, Every 5 minutes, Hourly, Every 12 hours, Daily, Weekly, Monthly) covers most jobs without ever touching cron syntax. This article is for the API's CRON schedule type, for anything that needs a fully custom expression. VPS Snaps uses standard 5-field cron expressions for those, and all times are UTC — the dashboard presets are timezone-aware, but a raw cron schedule is not.

Cron field reference

# ┌─ minute (0-59)
# │ ┌─ hour (0-23)
# │ │ ┌─ day of month (1-31)
# │ │ │ ┌─ month (1-12)
# │ │ │ │ ┌─ day of week (0-7, 0 and 7 = Sunday)
# │ │ │ │ │
  * * * * *

Common schedules

0 2 * * *      # Daily at 2:00 AM UTC
0 2 * * 0      # Weekly on Sunday at 2:00 AM UTC
0 2 1 * *      # Monthly on the 1st at 2:00 AM UTC
0 */6 * * *    # Every 6 hours
30 1 * * 1-5   # Weekdays at 1:30 AM UTC

Faster-than-daily schedules

How fast you can go depends on your plan: Free and Starter are daily only, Standard adds every-12-hours, and Pro and Agency unlock every-5-minutes backups. The dashboard's dropdown already offers these as presets — you only need a custom cron expression via the API if you need something the presets don't cover, and it's still subject to the same plan-based frequency limit.

Cron schedule times are UTC (unlike the dashboard's Daily/Weekly/Monthly presets, which are timezone-aware). If your team works in US Eastern time (UTC-5), '2:00 AM UTC' is '9:00 PM Eastern'. Plan accordingly to avoid backups during peak traffic hours.

Staggering jobs

If you have multiple backup jobs, stagger them by 15-30 minutes to avoid all jobs hammering your server and storage at the same time.

A good pattern: databases at :00, Docker at :15, VPS snapshots at :30.

Still stuck?

Open the failed run under Backup History and copy the error text out of the log — pasting that into your first message is usually the difference between one reply and four.