Backup Schedules
Schedules automate your backups so they run reliably without manual intervention.
Creating a Schedule
- Go to Schedules → New Schedule
- Fill in the schedule details:
- Name — A descriptive label (e.g.,
postgres-prod-daily) - Agent — Which agent runs the backup
- Database URL — Source database connection string
- Storage Target — Where to store backups
- Schedule — Cron expression or interval
- Timezone — The timezone for cron evaluation
- Retention — How long to keep backups
- Name — A descriptive label (e.g.,
- Click Save Schedule
Schedule Types
Cron Expression
Use standard cron syntax to define complex schedules:
┌───────────── minute (0-59)
│ ┌─────────── hour (0-23)
│ │ ┌───────── day of month (1-31)
│ │ │ ┌─────── month (1-12)
│ │ │ │ ┌───── day of week (0-6, Sun=0)
│ │ │ │ │
* * * * *
Common Examples
| Expression | Meaning |
|---|---|
0 2 * * * | Every day at 2:00 AM |
0 */6 * * * | Every 6 hours |
0 2 * * 0 | Every Sunday at 2:00 AM |
0 2 1 * * | First day of every month at 2:00 AM |
*/15 * * * * | Every 15 minutes |
0 2,14 * * * | Twice daily at 2:00 AM and 2:00 PM |
0 2 * * 1-5 | Weekdays at 2:00 AM |
Interval
Use a simple interval syntax:
every 30m # Every 30 minutes
every 6h # Every 6 hours
every 1d # Every day
every 1w # Every week
Timezone Configuration
Cron expressions are evaluated in the schedule's configured timezone. Always specify a timezone explicitly to avoid DST surprises:
schedule:
cron: "0 2 * * *"
timezone: "Asia/Jakarta" # WIB (UTC+7)
Common timezones used by jokowipe.id customers:
| Region | Timezone |
|---|---|
| US East | America/New_York |
| US West | America/Los_Angeles |
| UK | Europe/London |
| Germany | Europe/Berlin |
| Singapore | Asia/Singapore |
| Indonesia | Asia/Jakarta |
| Japan | Asia/Tokyo |
| Australia (Sydney) | Australia/Sydney |
Retention Policies
Each schedule has a retention policy that determines how long backups are kept:
Count-Based
retention:
keep_last: 30 # Keep the 30 most recent backups
Age-Based
retention:
keep_days: 90 # Keep backups for 90 days
Combined (Recommended)
retention:
keep_last: 7 # Always keep at least 7 backups
keep_days: 30 # But no older than 30 days
For production databases, we recommend:
- Daily backups: keep for 30 days
- Weekly backups: keep for 90 days
- Monthly backups: keep for 1 year (archived to Glacier/Coldline)
Managing Schedules
Enable / Disable
Toggle a schedule on or off without deleting it. Useful for maintenance windows.
# Via API
curl -X PATCH https://api.jokowipe.id/v1/schedules/sch-a1b2c3 \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"enabled": false}'
Pausing During Maintenance
The dashboard shows a Maintenance Window option on each schedule. Set a time window during which the schedule is temporarily disabled.
Viewing Schedule History
Go to Schedules → [Schedule Name] → History to see all runs for that schedule, with status, duration, and links to the full backup record.
Missed Backup Handling
If a scheduled backup is missed (e.g., agent was offline), jokowipe.id can:
| Setting | Behavior |
|---|---|
skip (default) | Skip the missed run and wait for the next window |
run_once | Run the missed backup once when the agent comes back online |
alert | Send an alert immediately when a scheduled window is missed |
Configure this in the schedule settings under Missed Backup Handling.
Multiple Schedules per Database
You can create multiple schedules targeting the same database — useful for tiered backup strategies:
postgres-prod-hourly: every 1h → S3 Standard (keep 24)
postgres-prod-daily: 0 2 * * * → S3 Standard-IA (keep 30d)
postgres-prod-weekly: 0 2 * * 0 → S3 Glacier (keep 1y)