Configuration¶
General settings¶
DBBACKUP_DATABASES¶
List of key entries for settings.DATABASES
which shall be used to connect and create database backups.
Default: list(settings.DATABASES.keys())
(keys of all entries listed)
DBBACKUP_TMP_DIR¶
Local directory used for creating temporary files (for example while streaming command output before uploading to storage).
Default: tempfile.gettempdir()
DBBACKUP_TMP_FILE_READ_SIZE¶
Read chunk size (in bytes) when streaming temporary files. Increase this if you're working with very large backups and want fewer read system calls; decrease for memory constrained environments.
Default: 1024 * 1000
(≈1 MB)
DBBACKUP_TMP_FILE_MAX_SIZE¶
Maximum size in bytes for file handling in memory before a temporary file is written in DBBACKUP_TMP_DIR
.
Default: 10*1024*1024
DBBACKUP_CLEANUP_KEEP and DBBACKUP_CLEANUP_KEEP_MEDIA¶
Number of most recent backups to keep when you pass the --clean <amount>
option to dbbackup
or mediabackup
. Older files beyond this count are deleted. DBBACKUP_CLEANUP_KEEP_MEDIA
defaults to the same value unless set.
Default: 10
DBBACKUP_CLEANUP_KEEP_FILTER¶
Optional callable for custom retention logic run during cleanup. Receives the filename of a candidate backup slated for deletion and returns True
to keep or False
to delete. Combine this with --clean
to implement e.g. “keep all end of month backups”.
Default: lambda filename: False
DBBACKUP_DATE_FORMAT¶
strftime
format string used when expanding {datetime}
in filename templates. Must contain only alphanumeric characters plus _ - %
.
Default: '%Y-%m-%d-%H%M%S'
DBBACKUP_HOSTNAME¶
Used to identify a backup by a server name in the file name.
Default: socket.gethostname()
DBBACKUP_FILENAME_TEMPLATE¶
Template used to construct database backup filenames. May be a format string or a callable. Default: '{databasename}-{servername}-{datetime}.{extension}'
. If you supply a function it must accept the keyword arguments shown below and return the complete filename string (without path).
def backup_filename(databasename, servername, datetime, extension, content_type):
pass
DBBACKUP_FILENAME_TEMPLATE = backup_filename
Use a custom function if you need hierarchical prefixes (e.g. year/month/
), or naming compatible with automatic life cycle / expiration rules of your object storage provider. {datetime}
is rendered using DBBACKUP_DATE_FORMAT
.
DBBACKUP_MEDIA_FILENAME_TEMPLATE¶
Same as DBBACKUP_FILENAME_TEMPLATE
, but used for media backups.
Default: '{servername}-{datetime}.{extension}'
DBBACKUP_MEDIA_PATH¶
Filesystem path whose contents are archived by the mediabackup
command. By default this is settings.MEDIA_ROOT
.
Default: settings.MEDIA_ROOT
Encrypting your backups¶
Backups may contain personal or otherwise sensitive data. When storing them outside trusted infrastructure you should encrypt them. Keep your private keys secure and ensure you have tested decryption in a disaster scenario.
You can encrypt a backup with the --encrypt
option. The backup is done using GPG.
python manage.py dbbackup --encrypt
...or when restoring from an encrypted backup:
python manage.py dbrestore --decrypt
Requirements:
- Install the python package python-gnupg:
pip install python-gnupg>=0.5.0
. - You need a GPG key. (GPG manual)
- Set the setting
DBBACKUP_GPG_RECIPIENT
to the name of the GPG key.
Note (Windows): The gpg
executable must be installed and on your PATH for encryption/decryption. If it is absent, django-dbbackup still works; only encryption-related features are unavailable. The test suite will automatically skip encryption tests when gpg
is not found.
DBBACKUP_GPG_ALWAYS_TRUST¶
If GPG does not fully trust the public key, encryption can fail. Setting this to True
adds --trust-model always
to bypass trust checks (only do this in controlled environments).
DBBACKUP_GPG_RECIPIENT¶
Recipient (key ID, fingerprint, or email) used for GPG encryption. Required when using --encrypt
and for automatic decryption with --decrypt
.
DBBACKUP_CONNECTORS¶
Optional per database override mapping similar to DATABASES
. Lets you define different credentials / hosts exclusively for backup / restore operations (e.g. read from a replica). Keys correspond to database aliases.
See the Databases section for details on how to configure connectors.
Default: {}
DBBACKUP_CONNECTOR_MAPPING¶
Map custom database engine names (e.g. from wrappers like transaction_hooks
or third party observability packages) to an existing DBBackup connector class path. Useful when a third party backend subclasses a supported Django backend but uses a different engine string.
See the Databases section for details on how to configure the connector mapping.
Default: {}
Email configuration¶
DBBACKUP_SEND_EMAIL¶
Controls whether django-dbbackup sends an error email when an uncaught exception is raised.
Default: True
DBBACKUP_SERVER_EMAIL¶
The email address that error messages come from, such as those sent to DBBACKUP_ADMINS
.
Default: django.conf.settings.SERVER_EMAIL
DBBACKUP_ADMINS¶
A list of recipients that receive error emails when DEBUG=False
and an unhandled exception occurs in a DBBackup command. Follows Django's standard ADMINS
tuple-of-tuples structure: (('Full Name', 'email@example.com'), ...)
.
Default: django.conf.settings.ADMINS
DBBACKUP_EMAIL_SUBJECT_PREFIX¶
Subject-line prefix for email messages sent by DBBackup.
Default: '[dbbackup] '
Database configuration¶
By default DBBackup uses values from settings.DATABASES
. Use DBBACKUP_CONNECTORS
(documented above) for backup specific overrides. See Database settings for backend specific options.
Storage configuration¶
You must configure a storage backend (STORAGES['dbbackup']
) to persist backups. See Storage settings for supported options.