3.16.0 (2025-10-02)
Notable changes
-
The
restore_command
for local restores no longer includessudo
When using
barman restore --get-wal
for a local restore (i.e. without
--remote-ssh-command
), the generatedrestore_command
no longer includes a
sudo -u $USER
prefix. This simplifies the process for the common case where the
locally restored Postgres cluster is run by thebarman
user, whom already owns the
files by the end of thebarman restore
operation.Action Required: If you intend to run the restored cluster as a different
user (e.g.,postgres
), you must now manually add the appropriate
sudo -u postgres
prefix to therestore_command
in the recovery configuration and
ensure file ownership is correct.References: BAR-675.
-
Deprecate
pygzip
andpybzip2
compression optionsThe
pygzip
andpybzip2
compression options are now deprecated and will be
removed in a future release. Users should migrate to thegzip
andbzip2
options,
which now use Python's internal libraries.This change was made to improve performance and code consistency. Previously, the
gzip
andbzip2
options relied on external subprocesses, while theirpy
counterparts used native Python libraries. The core compression logic forgzip
and
bzip2
has been updated to also use Python's built-in libraries, making the
pygzip
andpybzip2
options redundant.References: BAR-878.
-
Add delta-restore flag and recovery option to barman restore
Introduces the --delta-restore flag for barman restore, enabling delta
restore mode. This mode restores a backup by reusing identical data already present
in the destination directory, which drastically reduces restore time and network
traffic.This feature is also configurable per-server via 'recovery_options' as a new field
called delta-restore in the server configuration file.References: BAR-788.
-
S3 Object Deletion Fallback for Object Stores non-compliant with boto3 >=1.36
When using
delete_objects()
with some non-compliant S3-compatible object
stores, users could encounter aMissingContentMD5
ClientError
due to a breaking
change in boto3 1.36 that Botocore will no longer automatically compute and populate
theContent-MD5
header.To address this, Barman now implements a fallback mechanism:
- Bulk deletion via
delete_objects()
is still attempted first. - If
delete_objects()
fails withMissingContentMD5
, Barman automatically falls back
to deleting objects individually usingdelete_object()
, which does not require a
Content-MD5
header. - Other errors continue to raise exceptions as before.
This change ensures Barman remains compatible with non-compliant object
stores without requiring changes on the user's side.Users with older S3-compatible storage can continue performing backup cleanups
without failures, while newer object stores are unaffected.References: BAR-909.
- Bulk deletion via
-
Cloud connectivity checks are now only performed with the
-t
/--test
flag.Previously, Barman always tested cloud connectivity and bucket existence
for most of the commands, raising errors if connectivity failed or if the bucket
did not exist. Both checks are now executed only when the-t
/--test
flag is
specified. The only exception wasbarman-cloud-check-wal-archive
, which still
checks connectivity and the existence of the bucket.Additionally, buckets are no longer created automatically — Barman assumes the
target bucket already exists, making it the user's responsibility to provision
the bucket in advance.References: BAR-895, BAR-908, BAR-918.
Minor changes
-
Add
combine-mode
option tobarman restore
commandAdded a
--combine-mode
option to thebarman restore
command, which can be used
to specify a copy mode forpg_combinebackup
when combining incremental backups
during a restore. Available modes arecopy
,link
,clone
, andcopy-file-range
which are equivalent to thepg_combinebackup
options--copy
,--link
,
--clone
, and--copy-file-range
, respectively. An equivalentcombine_mode
configuration option can be specified in the configuration file.This feature allows for greater optimization of the restore process
based on the underlying filesystem capabilities.References: BAR-870.
-
Reorganize fields in barman diagnose JSON
In the barman diagnose JSON, some fields appeared under the server's "config"
section even though they were not actual configuration fields.The fields "barman_lock_directory", "lock_directory_cleanup", and
"config_changes_queue" were relocated under the "global" key, since they represent
global configurations. The "name" field was removed since the server name is already
used as the key. Additionally, "msg_list" is now stored under the server's name key.References: BAR-134.
-
Add '-p JOBS' to barman-wal-restore command when
--get-wal
isTrue
Adds '-p JOBS' to barman-wal-restore command when
--get-wal
orget_wal
configuration option isTrue
,JOBS
being the number of jobs chosen by the user
via-p
flag orparallel_jobs
configuration option.References: BAR-857.
-
The `barman show-backup`` command now displays the backup compression method
The output of the
barman show-backup
command has been enhanced to include a new
Backup Compression
field. If a backup was taken with compression enabled, this
field will now display the compression algorithm that was used (e.g.,zstd
). This
makes it easier to quickly verify the compression status of a backup.References: BAR-901.
Bugfixes
-
Fix parallelism (--parallel option) in barman-wal-restore
There has been a regression in
barman-wal-restore
when introducing the
--keep-compression
option in Barman 3.12.0, which made the--parallel
option
not invoke processes as expected. This issue has now been fixed.References: BAR-865.
-
Fix
pg_combinebackup
not being found inPATH
whenstaging_location
isremote
When recovering an incremental backup to a remote server with
staging_location
set toremote
, Barman checks ifpg_combinebackup
is available in the remotePATH
.
However, a previous issue was making it incorrectly check the localPATH
as well,
leading to errors ifpg_combinebackup
was not installed locally.
The problem has been fixed by ensuring that the check is only performed on the
server wherepg_combinebackup
is actually executed.References: BAR-903.