A Django app to create and load backups.
Project description
Django Backup Utils
With django-backup-utils you can:
- create backups with or without compression
- list available backups for your host & project
- restore database
- restore migration files
- restore any directory inside BASE_DIR
- manage backups via admin interface
A backup always contains
- timestamp
- per default a full dump of your database as json (using dumpdata)
- all migration .py files that are currently migrated.
- a customizable version stamp (e.g. commit hash)
- identifiers such as hostname, django project name
When restoring a backup
- automatically get the latest backup for your host + project
- see the backup's version stamp
- see the current version stamp
- see differences between backup und current migrations
- per default a blank unittest is run to ensure the fixture can be loaded (before anything is changed)
Backup logs are saved to database.
You can create/synchronize and restore backups via admin interface.
Project-Structure needed
projectname/
projectname/
__init__.py
settings.py
...
App1 /
migrations /
__init__.py
...
...
Quick start
-
$ pip install django-backup-utils
-
settings.py:
INSTALLED_APPS = [
...
'django_backup_utils.apps.BackupUtilsConfig',
]
BACKUP_ROOT = "/my/path/to/backupdir/"
BACKUP_DIRS = ["media"] # add more if needed
BACKUP_SYSTEM_VERSION = "my_build_id"
BACKUP_ROOT
specifies a directory where your backups will be stored.
BACKUP_DIRS
specifies directories relative to BASE_DIR
that will be included in the backup, can also be an empty array.
BACKUP_SYSTEM_VERSION
identification tag for your backup (e.g. your git commit hash/tag).
Optional:
BACKUP_IGNORE_CONSISTENCY = True
(Default = False), ignores inconsistency between the MigrationRecorder and local migration files.
(Default): Backups that would contain inconsistent migrations cannot be created and raise MigrationNotFound
exception.
When changed to True
, your backup will still contain all migration files that match the MigrationRecorder,
however migration files that are not found locally can not be included in the backup. (This can only happen if you delete/rename migration files before you create a backup).
urls.py:
from django.urls import path, include
urlpatterns = [
...
path('backup/', include('django_backup_utils.urls')),
]
$ python3 manage.py migrate
Usage
$ python3 manage.py createbackup
- create a backup that contains all database data, migration files and specified directories
optional arguments:
-h, --help show this help message and exit
--compress compresses backup (.gz)
--exclude exclude specific apps or models <appname>.<model>
--silent mutes some output
$ python3 manage.py loadbackup
- load the latest backup
optional arguments:
-h, --help show this help message and exit
--tarpath TARPATH load the specified backup tarfile
--flush flush the database (delete existing data)
--deletedirs delete all directories specified in settings.BACKUP_DIRS (before restoring)
--noinput disable all prompts
--loadmigrations restore all migration files
--skiptest skip the unittest for loading database dump
--silent mutes some output
$ python3 manage.py listbackups
- show backups located at settings.BACKUP_ROOT
optional arguments:
-h, --help show this help message and exit
--hostname HOSTNAME show backups for specified hostname
--projectname PROJECTNAME
show backups for specified django project
--all show all backups
--showinfo show backup metadata
Admin Interface permissions
Permission for restoring backups:
django_backup_utils | can_restore_backup
Permission for creating/synchronizing backups:
django_backup_utils | can_add_backup
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file django-backup-utils-0.2.0.tar.gz
.
File metadata
- Download URL: django-backup-utils-0.2.0.tar.gz
- Upload date:
- Size: 16.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 249b14638462f30775770fd8fa6faaef1b67d66845c7035f0a467b957d96ca41 |
|
MD5 | b0c0d1773a066c9fb97b41b5541c5e21 |
|
BLAKE2b-256 | b347bef91fdd371f5ad00cf89bcb140f4df8e0297c500d35e9e7e51a0e87af43 |