Browse articles

Database backup

# Scheduling backups: jobs, mode, retention, and encryption

Create a backup job with the four-step wizard: choose the source, schedule and full or incremental mode, destination, compression, retention, encryption, and notifications.

3 min readUpdated: October 22, 2026[Baca dalam Bahasa Indonesia](/docs/jadwal-backup)

A backup job defines which database is backed up, when, where to, and how long its artifacts are kept. Schedules are run by the agent on the server, so they keep running even when the control plane is unreachable.

## 1\. (Optional) Set an encryption passphrase

For encrypted jobs, open **Settings → Security**, enter a **New passphrase (min. 12 characters)**, and click **Save passphrase**. Backups are encrypted on your server (age: scrypt + ChaCha20-Poly1305) before upload. Keep this passphrase somewhere safe; see [Backup passphrase](/help/passphrase-backup).

## 2\. Create a job with the wizard

Open **Backup jobs → Create job**. The wizard has four steps.

1.  **Source**: choose the **Server** and the **Database connection**. You can leave **Job name** empty to use an automatic name.
2.  **Schedule & mode**:
    -   **Schedule**: _Daily at 02:00_, _Every 6 hours_, _Every hour_, _Every 30 minutes_, _Every Sunday at 03:00_, _On the 1st at 01:00_, or **Custom cron…**.
    -   **Time zone**: the zone used to interpret the schedule.
    -   **Backup mode**: **Full every time** (the whole database on every run) or **Full + incremental** (only changes since the previous run). For incremental, set **New full every N runs**; for example, an hourly schedule with N = 24 means one full per day.
3.  **Storage**:
    -   **Destination**: the managed bucket, an external S3 bucket, or Google Drive. See [Backup destinations](/docs/tujuan-backup).
    -   **Compression**: zstd (fast, good ratio), gzip, or no compression.
    -   **Retention**: keep for N days and/or at most the last N backups (0 = no limit).
    -   **Backup encryption**: **Encrypted** (recommended, requires the passphrase) or **Unencrypted**.
4.  **Notifications & summary**: **Notify on failure** and/or **Notify on success**, and **Job enabled**. Review the summary, then click **Create job**.

Once saved, the dashboard offers **Run now** for the first backup.

## 3\. Custom cron

The cron format has five fields: minute, hour, day of month, month, day of week. Examples:

```bash
0 1 * * *      # every day at 01:00
0 */4 * * *    # every 4 hours
30 2 * * 1-5   # Monday to Friday at 02:30
```

The shortcuts `@daily` and `@hourly` are accepted as well.

## 4\. Manage jobs

-   The **Backup jobs** list shows the last run status, the next schedule, a **Run** button, and an enabled/disabled switch. Disabled jobs are not scheduled but can still be run manually.
-   The job page offers **Run now**, **Full now** (for incremental jobs), the run history, job settings, and **Delete job**. Deleting a job deletes its run history; artifacts in the bucket are kept.
-   Changes to the settings apply from the next run.

## 5\. Plan limits

-   The tightest schedule depends on your backup plan.
-   Incremental mode is available from the Pro plan.
-   Retention is capped by the plan's history length (months × 30 days); 0 or longer values are adjusted automatically.
-   Retention is cleaned up hourly and never deletes a full backup that is still the base of incrementals.

## Troubleshooting

-   **"set passphrase enkripsi dulu di Pengaturan, atau matikan enkripsi untuk job ini"**: set a passphrase or choose **Unencrypted**.
-   **"incremental PostgreSQL butuh satu database tertentu"**: use a connection with a database name filled in.
-   **"paket ... mengizinkan jadwal paling rapat tiap ..."** (schedule too frequent for the plan): choose a less frequent schedule or upgrade.
-   **"backup incremental tersedia mulai paket Pro"**: choose **Full every time** or upgrade.
-   **The server is offline when the job is created**: the job is saved and runs once the agent is back online.
-   **A run failed**: read [Backup failed](/help/backup-gagal).

## See also

-   [Restoring a backup](/docs/restore)
-   [Notifications and alerts](/docs/notifikasi)

Still need help?

Open a support ticket from the dashboard and our team will reply as soon as possible.

[Help center](/en/help)[Open a ticket](/app/support/new)