barman.infofile module#
- class barman.infofile.BackupInfo(backup_id, **kwargs)View on GitHub#
Bases:
FieldListFile- DONE = 'DONE'#
- EMPTY = 'EMPTY'#
Conversion to string
- FAILED = 'FAILED'#
- KEEP_FULL = 'KEEP:FULL'#
- KEEP_STANDALONE = 'KEEP:STANDALONE'#
- NONE = '-'#
- OBSOLETE = 'OBSOLETE'#
Status according to retention policies
- POTENTIALLY_OBSOLETE = 'OBSOLETE*'#
- RETENTION_STATUS = ('OBSOLETE', 'VALID', 'OBSOLETE*', 'KEEP:FULL', 'KEEP:STANDALONE', '-')#
- STARTED = 'STARTED'#
- STATUS_ALL = ('EMPTY', 'STARTED', 'WAITING_FOR_WALS', 'DONE', 'SYNCING', 'FAILED')#
- STATUS_ARCHIVING = ('STARTED', 'WAITING_FOR_WALS', 'DONE', 'SYNCING')#
- STATUS_COPY_DONE = ('WAITING_FOR_WALS', 'DONE')#
- STATUS_NOT_EMPTY = ('STARTED', 'WAITING_FOR_WALS', 'DONE', 'SYNCING', 'FAILED')#
- SYNCING = 'SYNCING'#
- VALID = 'VALID'#
- WAITING_FOR_WALS = 'WAITING_FOR_WALS'#
- __init__(backup_id, **kwargs)View on GitHub#
Stores meta information about a single backup
- Parameters:
backup_id (str,None)
- _hide_if_null = ('backup_name', 'snapshots_info')#
- backup_id#
- backup_label#
- backup_name#
- property backup_typeView on GitHub#
Returns a string with the backup type label.
Note
Even though this property is available in this base class, it is not expected to be used in the context of cloud backups.
The backup type can be one of the following: -
snapshot: If the backup mode starts withsnapshot. -rsync: If the backup mode starts withrsync. -incremental: If the mode ispostgresand the backup is incremental. -full: If the mode ispostgresand the backup is not incremental.- Return str:
The backup type label.
- backup_version#
- begin_offset#
- begin_time#
- begin_wal#
- begin_xlog#
- children_backup_ids#
- cluster_size#
- compression#
- config_file#
- copy_stats#
- data_checksums#
- deduplicated_size#
- property deduplication_ratioView on GitHub#
Returns a value between and including
0and1related to the estimate deduplication ratio of the backup.Note
For
rsyncbackups, thesizeof the backup, which is the sum of all file sizes in basebackup directory, is used to calculate the ratio. Forpostgresbackups, thecluster_sizeis used, which contains the estimated size of the Postgres cluster at backup time.We perform this calculation to make an estimation of how much network and disk I/O has been saved when taking an incremental backup through
rsyncor throughpg_basebackup.We abuse of the term “deduplication” here. It makes more sense to
rsyncthan topostgresmethod. However, the idea is the same in both cases: get an estimation of resources saving.Note
Even though this property is available in this base class, it is not expected to be used in the context of cloud backups.
- Return float:
The backup deduplication ratio.
- end_offset#
- end_time#
- end_wal#
- end_xlog#
- error#
- classmethod from_json(server, json_backup_info)View on GitHub#
Factory method that builds a BackupInfo object from a json dictionary
- Parameters:
server (barman.Server) – the server related to the Backup
json_backup_info (dict) – the data set containing values from json
- get_external_config_files()View on GitHub#
Identify all the configuration files that reside outside the PGDATA.
Returns a list of TypedFile objects.
- Return type:
list[TypedFile]
- get_required_wal_segments()View on GitHub#
Get the list of required WAL segments for the current backup
- property has_childrenView on GitHub#
Only checks if the backup_info has children
Note
This property only makes sense in the context of local backups stored in the Barman server. However, this property is used for retention policies processing, code which is shared among local and cloud backups. As this property always returns
Falsefor cloud backups, it can safely be reused in their code paths as well, though.- Return bool:
Trueif this backup has at least one child,Falseotherwise.
- hba_file#
- ident_file#
- included_files#
- property is_incrementalView on GitHub#
Only checks if the backup_info is an incremental backup
Note
This property only makes sense in the context of local backups stored in the Barman server. However, this property is used for retention policies processing, code which is shared among local and cloud backups. As this property always returns
Falsefor cloud backups, it can safely be reused in their code paths as well, though.- Return bool:
Trueif this backup has a parent,Falseotherwise.
- mode#
- parent_backup_id#
- pg_major_version()View on GitHub#
Returns the major version of the PostgreSQL instance from which the backup was made taking into account the change in versioning scheme between PostgreSQL < 10.0 and PostgreSQL >= 10.0.
- pgdata#
- server_name#
- set_attribute(key, value)View on GitHub#
Set a value for a given key
- size#
- snapshots_info#
- status#
- summarize_wal#
- systemid#
- tablespaces#
- timeline#
- to_dict()View on GitHub#
Return the backup_info content as a simple dictionary
- Return dict:
- to_json()View on GitHub#
Return an equivalent dictionary that uses only json-supported types
- version#
- wal_directory()View on GitHub#
Returns “pg_wal” (v10 and above) or “pg_xlog” (v9.6 and below) based on the Postgres version represented by this backup
- xlog_segment_size#
- class barman.infofile.Field(name, dump=None, load=None, default=None, doc=None)View on GitHub#
Bases:
object- __init__(name, dump=None, load=None, default=None, doc=None)View on GitHub#
Field descriptor to be used with a FieldListFile subclass.
The resulting field is like a normal attribute with two optional associated function: to_str and from_str
The Field descriptor can also be used as a decorator
- class C(FieldListFile):
x = Field(‘x’) @x.dump def x(val): return ‘0x%x’ % val @x.load def x(val): return int(val, 16)
- dump(to_str)View on GitHub#
- load(from_str)View on GitHub#
- class barman.infofile.FieldListFile(**kwargs)View on GitHub#
Bases:
object- __init__(**kwargs)View on GitHub#
Represent a predefined set of keys with the associated value.
The constructor build the object assigning every keyword argument to the corresponding attribute. If a provided keyword argument doesn’t has a corresponding attribute an AttributeError exception is raised.
The values provided to the constructor must be of the appropriate type for the corresponding attribute. The constructor will not attempt any validation or conversion on them.
This class is meant to be an abstract base class.
- Raises:
AttributeError
- _fields#
- _hide_if_null = ()#
- filename#
- classmethod from_meta_file(filename)View on GitHub#
Factory method that read the specified file and build an object with its content.
- Parameters:
filename (str) – the file to read
- items()View on GitHub#
Return a generator returning a list of (key, value) pairs.
If a filed has a dump function defined, it will be used.
- load(filename=None, file_object=None)View on GitHub#
Replaces the current object content with the one deserialized from the provided file.
This method set the filename attribute.
A ValueError exception is raised if the provided file contains any invalid line.
- Parameters:
filename (str) – path of the file to read
file_object (file) – a file like object to read from
filename – the file to read
- Raises:
ValueError
- save(filename=None, file_object=None)View on GitHub#
Serialize the object to the specified file or file object
If a file_object is specified it will be used.
If the filename is not specified it uses the one memorized in the filename attribute. If neither the filename attribute and parameter are set a ValueError exception is raised.
- Parameters:
filename (str) – path of the file to write
file_object (file) – a file like object to write in
filename – the file to write
- Raises:
ValueError
- class barman.infofile.LocalBackupInfo(server, info_file=None, backup_id=None, **kwargs)View on GitHub#
Bases:
BackupInfo- __init__(server, info_file=None, backup_id=None, **kwargs)View on GitHub#
Stores meta information about a single backup
- Parameters:
- Raises:
BackupInfoBadInitialisation – if the info_file content is invalid or neither backup_info or
- backup_manager#
- config#
- detect_backup_id()View on GitHub#
Detect the backup ID from the name of the parent dir of the info file
- get_backup_manifest_path()View on GitHub#
Get the full path to the backup manifest file
- Return str:
the full path to the backup manifest file.
- get_basebackup_directory()View on GitHub#
Get the default filename for the backup.info file based on backup ID and server directory for base backups
- get_child_backup_info(child_backup_id)View on GitHub#
Allow to retrieve a specific child of the current incremental backup, if there are any.
If the child backup exists, the LocalBackupInfo object for it is returned. If does not exist or its status is EMPTY, return None
- Parameters:
child_backup_id (str) – the ID of the child backup to retrieve
- Return LocalBackupInfo|None:
the child backup info object, or None if it does not exist or is empty.
- get_data_directory(tablespace_oid=None)View on GitHub#
Get path to the backup data dir according with the backup version
If tablespace_oid is passed, build the path to the tablespace base directory, according with the backup version
- Parameters:
tablespace_oid (int) – the oid of a valid tablespace
- get_filename()View on GitHub#
Get the default filename for the backup.info file based on backup ID and server directory for base backups
- get_list_of_files(target)View on GitHub#
Get the list of files for the current backup
- get_parent_backup_info()View on GitHub#
If the backup is incremental, build the
LocalBackupInfoobject for the parent backup and return it. If the backup is not incremental OR the status of the parent backup isEMPTY, returnNone.- Return LocalBackupInfo|None:
the parent backup info object, or None if it does not exist or is empty.
- is_checksum_consistent()View on GitHub#
Check if all backups in the chain are consistent with their checksums configurations.
The backup chain is considered inconsistent if the current backup was taken with
data_checksumsenabled and any of its ascendants were taken with it disabled. It is considered consistent otherwise.Note
While this method was created to check inconsistencies in chains of one or more (Postgres 17+ core) incremental backups, it can be safely used with any Postgres version and with any Barman backup method. That is true because it always returns
Truewhen called for a Postgres full backup or for a rsync backup.- return bool:
Trueif it is consistent,Falseotherwise.
- is_full_and_eligible_for_incremental()View on GitHub#
Check if this is a full backup taken with postgres method and which is eligible to be a parent for an incremental backup.
Note
Only consider backups which are eligible for Postgres core incremental backups:
backup_method =
postgressummarize_wal =
onis_incremental =
False
- Return bool:
True if it’s a full backup or False if not.
- property is_orphanView on GitHub#
Determine if the backup is an orphan.
An orphan backup is defined as a backup directory that contains only a non-empty backup.info file. This may indicate an incomplete delete operation.
- Return bool:
Trueif the backup is an orphan,Falseotherwise.
- save(filename=None, file_object=None)View on GitHub#
Serialize the object to the specified file or file object
If a file_object is specified it will be used.
If the filename is not specified it uses the one memorized in the filename attribute. If neither the filename attribute and parameter are set a ValueError exception is raised.
- Parameters:
filename (str) – path of the file to write
file_object (file) – a file like object to write in
filename – the file to write
- Raises:
ValueError
- server#
- walk_backups_tree(return_self=True)View on GitHub#
Walk through all the children backups of the current backup.
Note
The objects are returned with a bottom-up approach, including all children backups plus the caller backup.
- Parameters:
return_self (bool) – Whether to return the current backup. Default to
True.- Yields:
a generator of
LocalBackupInfoobjects for each backup, walking from the leaves to self.
- walk_to_root(return_self=True)View on GitHub#
Walk through all the parent backups of the current backup.
Note
The objects are returned with a bottom-up approach, including all parents backups plus the caller backup if return_self is
True.- Parameters:
return_self (bool) – Whether to return the current backup. Default to
True.- Yield:
a generator of
LocalBackupInfoobjects for each parent backup.
- class barman.infofile.SyntheticBackupInfo(server, base_directory, backup_id=None, info_file=None, **kwargs)View on GitHub#
Bases:
LocalBackupInfo- __init__(server, base_directory, backup_id=None, info_file=None, **kwargs)View on GitHub#
Stores meta information about a single synthetic backup.
Note
A synthetic backup is a base backup which was artificially created through
pg_combinebackup. A synthetic backup is not part of the Barman backup catalog, and only exists so we are able to recover a backup created bypg_combinebackuputility, as almost all functions and methods require a backup info object.The only difference from this class to its parent
LocalBackupInfois that it accepts a custom base directory for the backup as synthetic backups are expected to live on directories other than the default<server_name>/basepath.- Parameters:
server (barman.server.Server) – the server that owns the synthetic backup
base_directory (str) – the root directory where this synthetic backup resides, essentially an override to the
server.config.basebackups_directoryconfiguration.backup_id (str|None) – the backup id of this backup
info_file (None|str|TextIO) – path or file descriptor of an existing synthetic
backup.infofile
- backup_manager#
- config#
- get_basebackup_directory()View on GitHub#
Get the backup directory based on its base directory
- server#
- class barman.infofile.Tablespace(name, oid, location)#
Bases:
tuple- _asdict()#
Return a new dict which maps field names to their values.
- _field_defaults = {}#
- _fields = ('name', 'oid', 'location')#
- classmethod _make(iterable)#
Make a new Tablespace object from a sequence or iterable
- _replace(**kwds)#
Return a new Tablespace object replacing specified fields with new values
- location#
Alias for field number 2
- name#
Alias for field number 0
- oid#
Alias for field number 1
- barman.infofile.TypedFile#
alias of
ConfFile
- class barman.infofile.WalFileInfo(**kwargs)View on GitHub#
Bases:
FieldListFileMetadata of a WAL file.
- compression#
compression type
- classmethod from_file(filename, compression_manager=None, unidentified_compression=None, **kwargs)View on GitHub#
Factory method to generate a WalFileInfo from a WAL file.
Every keyword argument will override any attribute from the provided file. If a keyword argument doesn’t has a corresponding attribute an AttributeError exception is raised.
- classmethod from_xlogdb_line(line)View on GitHub#
Parse a line from xlog catalogue
- Parameters:
line (str) – a line in the wal database to parse
- Return type:
- fullpath(server)View on GitHub#
Returns the WAL file full path
- Parameters:
server (barman.server.Server) – the server that owns the wal file
- name#
base name of WAL file
- orig_filename#
- relpath()View on GitHub#
Returns the WAL file path relative to the server’s wals_directory
- size#
WAL file size after compression
- time#
WAL file modification time (seconds since epoch)
- to_json()View on GitHub#
Return an equivalent dictionary that can be encoded in json
- to_xlogdb_line()View on GitHub#
Format the content of this object as a xlogdb line.
- barman.infofile.dump_backup_ids(ids)View on GitHub#
Dump a list of backup IDs to disk as a string.
- barman.infofile.load_backup_ids(string)View on GitHub#
Load a list of backup IDs from disk as a
list.- Parameters:
string – the string to be loaded as a list.
- Return list[str]|None:
the list of backup IDs, if any.
- barman.infofile.load_datetime_tz(time_str)View on GitHub#
Load datetime and ensure the result is timezone-aware.
If the parsed timestamp is naive, transform it into a timezone-aware one using the local timezone.
- Parameters:
time_str (str) – string representing a timestamp
- Return datetime:
the parsed timezone-aware datetime
- barman.infofile.load_snapshots_info(string)View on GitHub#
- barman.infofile.load_tablespace_list(string)View on GitHub#
Load the tablespaces as a Python list of namedtuple Uses ast to evaluate information about tablespaces. The returned list is used to create a list of namedtuple
- Parameters:
string (str)
- Return list:
list of namedtuple representing all the tablespaces
- barman.infofile.null_repr(obj)View on GitHub#
Return the literal representation of an object
- Parameters:
obj (object) – object to represent
- Return str|None:
Literal representation of an object or None
- barman.infofile.output_snapshots_info(snapshots_info)View on GitHub#
- barman.infofile.output_tablespace_list(tablespaces)View on GitHub#
Return the literal representation of tablespaces as a Python string
- Parameters:
tablespaces (tablespaces) – list of Tablespaces objects
- Return str:
Literal representation of tablespaces