Maintenance Tasks

Pruning

Prune lets you specify which backup snapshots you want to keep. The following retention options are available:

keep-last <N>

Keep the last <N> backup snapshots.

keep-hourly <N>

Keep backups for the last <N> hours. If there is more than one backup for a single hour, only the latest is retained.

keep-daily <N>

Keep backups for the last <N> days. If there is more than one backup for a single day, only the latest is retained.

keep-weekly <N>

Keep backups for the last <N> weeks. If there is more than one backup for a single week, only the latest is retained.

Note

Weeks start on Monday and end on Sunday. The software uses the ISO week date system and handles weeks at the end of the year correctly.

keep-monthly <N>

Keep backups for the last <N> months. If there is more than one backup for a single month, only the latest is retained.

keep-yearly <N>

Keep backups for the last <N> years. If there is more than one backup for a single year, only the latest is retained.

The retention options are processed in the order given above. Each option only covers backups within its time period. The next option does not take care of already covered backups. It will only consider older backups.

Old unfinished or incomplete backups will be removed by the prune command, unless they are newer than the last successful backup. In this case, the last failed backup is retained.

Prune Simulator

You can use the built-in prune simulator to explore the effect of different retention options with various backup schedules.

Prune Jobs

Prune and garbage collection options

Prune jobs are configured to periodically prune a datastore or a subset of it. You can manage prune jobs in the web interface, from the Prune & GC tab of the Datastore panel or from that of the Datastore itself. Alternatively, you can manage them with the proxmox-backup-manager prune-job command. The configuration information for prune jobs is stored at /etc/proxmox-backup/prune.cfg. To create a new prune job, click the add button in the GUI, or use the manager CLI's create subcommand. After creating a prune job, you can either start it manually from the GUI or provide it with a schedule (see Calendar Events) to run regularly.

Each prune job has settings for retention, limitation of scope and frequency.

store <datastore>

The datastore you want to run this prune job on.

ns <namespace>

Limit the prune job to a specific namespace.

max-depth <N>

Configure the namespace depth it should prune from below the configured namespace. For example, 0 to only prune the backup groups available directly on the configured namespace itself. Omit the parameter to scan to the full depth below.

Prune Job creation and edit dialogue
schedule

Configure a calendar event interval for when to automatically trigger this job. You can omit this if you want to trigger a job only manually.

keep-X

See the description of the various retention options above.

disable

Set to disable a job temporarily while keeping its settings.

comment

You can add a short comment for a job, for example about it intentions.

Manual Pruning

Prune and garbage collection options

To manually prune a specific backup group, you can use proxmox-backup-client's prune subcommand, discussed in Pruning and Removing Backups, or navigate to the Content tab of the datastore and click the scissors icon in the Actions column of the relevant backup group.

Retention Settings Example

The backup frequency and retention of old backups may depend on how often data changes and how important an older state may be in a specific workload. When backups act as a company's document archive, there may also be legal requirements for how long backup snapshots must be kept.

For this example, we assume that you are doing daily backups, have a retention period of 10 years, and the period between backups stored gradually grows.

  • keep-last: 3 - even if only daily backups, an admin may want to create an extra one just before or after a big upgrade. Setting keep-last ensures this.

  • keep-hourly: not set - for daily backups this is not relevant. You cover extra manual backups already, with keep-last.

  • keep-daily: 13 - together with keep-last, which covers at least one day, this ensures that you have at least two weeks of backups.

  • keep-weekly: 8 - ensures that you have at least two full months of weekly backups.

  • keep-monthly: 11 - together with the previous keep settings, this ensures that you have at least a year of monthly backups.

  • keep-yearly: 9 - this is for the long term archive. As you covered the current year with the previous options, you would set this to nine for the remaining ones, giving you a total of at least 10 years of coverage.

We recommend that you use a higher retention period than is minimally required by your environment; you can always reduce it if you find it is unnecessarily high, but you cannot recreate backup snapshots from the past.

Garbage Collection

You can monitor and run garbage collection on the Proxmox Backup Server using the garbage-collection subcommand of proxmox-backup-manager. You can use the start subcommand to manually start garbage collection on an entire datastore and the status subcommand to see attributes relating to the garbage collection.

This functionality can also be accessed in the GUI, by navigating to Prune & GC from the top panel of a datastore. From here, you can edit the schedule at which garbage collection runs and manually start the operation.

Verification

Adding a verify job

Proxmox Backup Server offers various verification options to ensure that backup data is intact. Verification is generally carried out through the creation of verify jobs. These are scheduled tasks that run verification at a given interval (see Calendar Events). With these, you can also set whether already verified snapshots are ignored, as well as set a time period, after which snapshots are checked again. The interface for creating verify jobs can be found under the Verify Jobs tab of the datastore.

Note

It is recommended that you reverify all backups at least monthly, even if a previous verification was successful. This is because physical drives are susceptible to damage over time, which can cause an old, working backup to become corrupted in a process known as bit rot/data degradation. It is good practice to have a regularly recurring (hourly/daily) verification job, which checks new and expired backups, then another weekly/monthly job that will reverify everything. This way, there will be no surprises when it comes to restoring data.

Aside from using verify jobs, you can also run verification manually on entire datastores, backup groups or snapshots. To do this, navigate to the Content tab of the datastore and either click Verify All or select the V. icon from the Actions column in the table.

Notifications

Proxmox Backup Server can send you notification emails about automatically scheduled verification, garbage-collection and synchronization tasks results.

By default, notifications are sent to the email address configured for the root@pam user. You can instead set this user for each datastore.

Datastore Options

You can also change the level of notification received per task type, the following options are available:

  • Always: send a notification for any scheduled task, independent of the outcome

  • Errors: send a notification for any scheduled task that results in an error

  • Never: do not send any notification at all

Maintenance Mode

Proxmox Backup Server supports setting read-only and offline maintenance modes on a datastore.

Once enabled, depending on the mode, new reads and/or writes to the datastore are blocked, allowing an administrator to safely execute maintenance tasks, for example, on the underlying storage.

Internally Proxmox Backup Server tracks whether each datastore access is a write or read operation, so that it can gracefully enter the respective mode, by allowing conflicting operations that started before enabling the maintenance mode to finish.