Panellicense

Configure JetBackup 5 retention policies on cPanel

Plan and configure JetBackup 5 retention on cPanel — snapshot count vs age modes, GFS-style tiered jobs, and the prune behaviour that catches operators out.

8 min readUpdated 2026-05-17jetbackup-5 · retention · backup-policy · cpanel
schema: HowToschema: FAQPageschema: BreadcrumbList

A JetBackup 5 install with no retention policy will keep every snapshot forever. On a typical 50-account shared server that means the destination fills in about three weeks, the next backup job aborts mid-write, and the on-call alert wakes you at 04:30 to a half-corrupted incremental that cannot be restored cleanly.

Retention is the single setting that controls backup storage cost, and it is configured per schedule — not per job, and not globally. This guide covers the three retention modes, when to use each, how to build a grandfather-father-son rotation with compound jobs, and how to verify the pruner is actually deleting what it claims to.

How JetBackup 5 retention works

A JetBackup 5 backup job has one or more schedules (Hourly, Daily, Weekly, Monthly, or Custom Cron). Each schedule carries its own retention setting. After every successful run, the pruner walks the destination, identifies snapshots that no longer fit the policy for that schedule, and deletes them. There is no separate prune cron — retention runs in-band with the job.

Three retention modes are available per schedule:

  • Snapshot Count — keep the most recent N snapshots from this schedule. Simple, predictable, the right default.
  • Snapshot Age — keep snapshots newer than N days. Useful when the requirement is regulatory ("90 days of recoverable backups") rather than operational.
  • Cumulative Size — keep adding until the destination usage for this job hits N GB, then prune oldest first. Use when storage cost is the hard constraint.

A critical detail for storage planning: JetBackup 5 uses incremental snapshots on local and SFTP destinations, with hardlinks pointing back to unchanged files in earlier snapshots. The disk usage of 30 daily snapshots is not 30× the size of one. It is closer to one full snapshot plus 30 days of deltas — for a typical cPanel account with low churn, often 1.3-1.6× the full size. Object-storage destinations (S3, B2) don't use hardlinks, so the math is closer to linear there.

Choose a retention model

For shared hosting, the standard pattern is Snapshot Count per schedule combined with a tiered job set. For compliance-driven workloads, Snapshot Age maps better to the language of the regulation. Cumulative Size is the fallback when the destination is small and unforgiving (a 100 GB SFTP target, for example).

You can mix modes across schedules within a single job — Snapshot Count of 7 on the Daily schedule, Snapshot Age of 90 days on the Weekly schedule. JetBackup 5.4 added this; if you are still on 5.2 or earlier, the retention type is job-wide and you need separate jobs to mix.

Configure retention on a backup job

In WHM open JetBackup 5 → Manage Jobs and edit the job (or create a new Account Backup Job). Scroll to Schedules and click the schedule row you want to tune.

For Snapshot Count:

  • Retention Type: Snapshot Count
  • Retention Settings → Count: 7 (for daily) or whatever fits

For Snapshot Age:

  • Retention Type: Snapshot Age
  • Retention Settings → Days: 30

For Cumulative Size:

  • Retention Type: Cumulative
  • Retention Settings → Size (GB): leave a 20% buffer below the destination capacity

Save the schedule, save the job. The new retention takes effect on the next run — JetBackup will not retroactively prune what was already on the destination unless you trigger a manual job run. To clean up immediately, run the job once from Manage Jobs → Run with no schedule change, and the pruner will catch up.

Build a GFS rotation with compound jobs

The classic grandfather-father-son rotation — 7 daily, 4 weekly, 12 monthly — is configured in JetBackup 5 as three schedules on a single Account Backup Job:

ScheduleCronRetention
Daily0 2 * * *Snapshot Count = 7
Weekly0 3 * * 0Snapshot Count = 4
Monthly0 4 1 * *Snapshot Count = 12

With this layout JetBackup keeps roughly 23 distinct snapshots per account, but storage scales much more gently than 23× because of the incremental hardlinks on local and SFTP destinations. For a 500 GB account with ~2% daily churn, expect destination usage around 600-700 GB total per account, not 11.5 TB.

If you are writing to object storage (S3, Wasabi, B2) the same job structure works but the storage math is roughly linear — budget 23× the average snapshot size and consider pairing with Object Lock for ransomware protection. For destination setup, see Configure JetBackup 5 destinations on cPanel.

Verify retention is actually pruning

Check the job log under Manage Jobs → [job] → View Log. Successful pruning produces lines of the form:

[INFO] Retention started
[INFO] Snapshot 2026-04-10_02-00-01 exceeds Snapshot Count (7), marking for removal
[INFO] Removed snapshot 2026-04-10_02-00-01
[INFO] Retention finished — removed 1 snapshot, freed 4.2 GB

If you see Retention started followed immediately by Retention finished — removed 0 snapshots despite an obviously full destination, the retention setting is set too generously, the job has not run enough times to accumulate snapshots past the threshold, or the destination is read-only — check the credentials and IAM policy.

For object-storage destinations, cross-check with the provider's storage metrics. JetBackup's reported "destination usage" can lag the actual bucket size by one job run.

Common retention mistakes

  • Forgetting Custom Cron schedules count separately. A one-off Custom Cron schedule with no retention will keep its snapshots forever, even if every other schedule on the job is bounded.
  • Mixing JetBackup retention with destination lifecycle rules. If the S3 bucket has a lifecycle rule that expires objects at 30 days but JetBackup retention is set to 90, the bucket silently eats your backups and JetBackup logs object not found errors on the next prune. Pick one system as the authority — JetBackup is usually the right choice.
  • Counting Account Filter exclusions against retention. If you exclude an account mid-cycle, its old snapshots stay on the destination but are no longer pruned by the job. Delete them manually with jetbackup5api -F deleteBackup or via the Manage Backups UI.
  • Setting Snapshot Age below the schedule interval. A weekly job with 5-day age retention prunes the previous week's backup before the new one runs — every Sunday morning, briefly, you have zero weekly backups. Always set age retention to at least 2× the schedule interval.
How do I change JetBackup 5 retention without losing existing backups?+
Edit the schedule's retention setting and save. Existing snapshots stay until the next job run, at which point the pruner applies the new policy. To prune immediately, trigger a manual run of the job — the pruner runs in-band with every backup.
What's the difference between Snapshot Count and Snapshot Age retention in JetBackup 5?+
Snapshot Count keeps the most recent N snapshots regardless of timing — predictable for operations. Snapshot Age keeps everything newer than N days regardless of count — predictable for compliance reporting. A weekly job with Snapshot Count = 4 always has 4 backups; with Snapshot Age = 30 it has 4-5 depending on the day of the month.
Does JetBackup 5 retention apply per account or per server?+
Per schedule, per job. If one job backs up 50 accounts with Snapshot Count = 7, you get 7 snapshots of each account — not 7 snapshots across all 50. Cumulative Size is the only mode that aggregates across accounts, and it sums every account's data against the cap.
Why are old JetBackup snapshots still on disk after I lowered retention?+
The pruner only runs at the end of a job, so retention changes take effect on the next scheduled run. Force the cleanup by triggering a manual job run from Manage Jobs. If snapshots persist after that, check the job log for prune errors — failed deletes on object storage usually mean IAM permissions or an Object Lock policy is blocking them.
Can I keep different retention for different cPanel accounts in one job?+
Not within a single job — retention is per schedule, applied uniformly to every account the job backs up. Create separate jobs with different Account Filter selections and different retention settings. JetBackup deduplicates on the destination, so two jobs targeting the same destination don't double the storage.

Next steps

Switch in an afternoon

Switch from your current reseller — free.

We migrate active cPanel, Plesk, LiteSpeed and CloudLinux licenses from any reseller. We prorate the first month so you never pay twice, and your customers see zero downtime during the swap.