Django sync env
django-sync-env is a Django app to manage backing up and restoring django databases and media assets easily.
Detailed documentation is in the "docs" directory (it's a work in progress).
Requirements:
- configurable backups and restore which can be run on demand, celery cron or in dev.
- support s3 bucket and file storage options first, add azure blob storage later
- interactive prompts for local dev
- command line options with --no-input for CICD and automations
- restore latest option for media and backups for X env
- backup before restore option
Setup
- Add "django_sync_env" to your INSTALLED_APPS setting like this:
INSTALLED_APPS = [
...,
"django_sync_env",
]
- Configure the app via a settings file .typically
./settings/partial/sync_env.pyfor base configuration, don't forget to import this file via your base.py settings file And override any required settings per environment via./settings/partials/[env].pysee example_partials
There is a s3 terraform example for provisioning an aws s3 bucket, iam user, roles and policy to allow for remote backup/restore to/from a secure s3 bucket.
See management commands for more details for each of the commands available.
./manage.py sync_env_backup_dbusage./manage.py sync_env_backup_media./manage.py sync_env_restore_db./manage.py sync_env_restore_media./manage.py sync_env_list_backups
See Tasks for more details for each of the tasks available.
Development and Publishing
See documentation.
Existing project migration
- To run db backup manually without storing anything on the local server you can run following command
export AWS_ACCESS_KEY_ID="<backup-user-key>"
export AWS_SECRET_ACCESS_KEY="<backup-user-secret>"
pg_dump --dbname="postgresql://<db-user>:<db-password>@<db-host>:5432/<db-name>" --format=custom | gzip --stdout | aws s3 cp - "s3://<project-name>-<env>-backups/<sensible-name-here>-<db-name>-$(date +'%d-%m-%Y-%H%M%S').psql.bin.gz"
- After that you can restore this database backup using
./manage.py sync_env_restore_db
TODO:
- remove command options which we wont use
- make sure all management commands work with good error logging and handling
- Update the sync-env-backup command to enable the option to specify particular databases
- Update the sync-env-backup command to exclude particular tables in particular databases
Release files for django-sync-env 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_sync_env-1.1.0.tar.gz | 22.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_sync_env-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size:57.6 kB
Release files / django_sync_env-1.1.0.tar.gz
| Download URL | django_sync_env-1.1.0.tar.gz |
|---|---|
| Size | 22.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
42071831847875ffbfcf7686af01afedae49e3466afdd4370d19178228060bdc
|
|
BLAKE2b-256 checksum How to use checksums |
db6b5ec153700278246450fd3baaf3933a4415405af1ef203692930df37dcaeb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.2 CPython/3.12.14 Linux/6.18.35
|
Release files / django_sync_env-1.1.0-py3-none-any.whl
| Download URL | django_sync_env-1.1.0-py3-none-any.whl |
|---|---|
| Size | 34.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3307d07b066e2c1676f9dc1415066914afded1b95c6b869f3ca000a89dc89fb9
|
|
BLAKE2b-256 checksum How to use checksums |
a1590a87483da4b949a4b3958165c1fc5bebea7dc0ada7cdc756296cbe418c9b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.4.2 CPython/3.12.14 Linux/6.18.35
|