Management commands to help backup and restore your project database and media files

Overview

Django Database Backup

Documentation Status https://coveralls.io/repos/django-dbbackup/django-dbbackup/badge.svg?branch=master&service=github Code Health

This Django application provides management commands to help backup and restore your project database and media files with various storages such as Amazon S3, Dropbox, local file storage or any Django storage.

It is made for:

  • Ensure your backup with GPG signature and encryption
  • Archive with compression
  • Deal easily with remote archiving
  • Great to keep your development database up to date.
  • Use Crontab or Celery to setup automated backups.

Docs

See our offical documentation at Read The Docs.

Why use DBBackup

This software doesn't reinvent the wheel, in few words it is a pipe between your Django project and your backup storage. It tries to use the traditional dump & restore mechanisms, apply compression and/or encryption and use the storage system you desire.

It gives a simple interface to backup and restore your database or media files.

Management Commands

dbbackup

Backup your database to the specified storage. By default this will backup all databases specified in your settings.py file and will not delete any old backups. You can optionally specify a server name to be included in the backup filename.

Usage: ./manage.py dbbackup [options]

Options:
  --noinput             Tells Django to NOT prompt the user for input of any
                        kind.
  -q, --quiet           Tells Django to NOT output other text than errors.
  -c, --clean           Clean up old backup files
  -d DATABASE, --database=DATABASE
                        Database to backup (default: everything)
  -s SERVERNAME, --servername=SERVERNAME
                        Specify server name to include in backup filename
  -z, --compress        Compress the backup files
  -e, --encrypt         Encrypt the backup files
  -o OUTPUT_FILENAME, --output-filename=OUTPUT_FILENAME
                        Specify filename on storage
  -O OUTPUT_PATH, --output-path=OUTPUT_PATH
                        Specify where to store on local filesystem
  -x EXCLUDE_TABLES, --exclude-tables=EXCLUDE_TABLES
                        Exclude tables data from backup (-x 'public.table1, public.table2')

dbrestore

Restore your database from the specified storage. By default this will lookup the latest backup and restore from that. You may optionally specify a servername if you you want to backup a database image that was created from a different server. You may also specify an explicit local file to backup from.

Usage: ./manage.py dbrestore [options]

Options:
  --noinput             Tells Django to NOT prompt the user for input of any
                        kind.
  -d DATABASE, --database=DATABASE
                        Database to restore
  -i INPUT_FILENAME, --input-filename=INPUT_FILENAME
                        Specify filename to backup from
  -I INPUT_PATH, --input-path=INPUT_PATH
                        Specify path on local filesystem to backup from
  -s SERVERNAME, --servername=SERVERNAME
                        Use a different servername backup
  -c, --decrypt         Decrypt data before restoring
  -p PASSPHRASE, --passphrase=PASSPHRASE
                        Passphrase for decrypt file
  -z, --uncompress      Uncompress gzip data before restoring

mediabackup

Backup media files by get them one by one, include in a TAR file.

Usage: ./manage.py mediabackup [options]

Options:
  --noinput             Tells Django to NOT prompt the user for input of any
                        kind.
  -q, --quiet           Tells Django to NOT output other text than errors.
  -c, --clean           Clean up old backup files
  -s SERVERNAME, --servername=SERVERNAME
                        Specify server name to include in backup filename
  -z, --compress        Compress the archive
  -e, --encrypt         Encrypt the backup files
  -o OUTPUT_FILENAME, --output-filename=OUTPUT_FILENAME
                        Specify filename on storage
  -O OUTPUT_PATH, --output-path=OUTPUT_PATH
                        Specify where to store on local filesystem

mediarestore

Restore media files from storage backup to your media storage.

Usage: ./manage.py mediarestore [options]

Options:
  --noinput             Tells Django to NOT prompt the user for input of any
                        kind.
  -q, --quiet           Tells Django to NOT output other text than errors.
  -i INPUT_FILENAME, --input-filename=INPUT_FILENAME
                        Specify filename to backup from
  -I INPUT_PATH, --input-path=INPUT_PATH
                        Specify path on local filesystem to backup from
  -e, --decrypt         Decrypt data before restoring
  -p PASSPHRASE, --passphrase=PASSPHRASE
                        Passphrase for decrypt file
  -z, --uncompress      Uncompress gzip data before restoring
  -r, --replace         Replace existing files

Contributing

All contribution are very welcomed, propositions, problems, bugs and enhancement are tracked with GitHub issues system and patch are submitted via pull requests.

We use Travis coupled with Coveralls as continious integration tools.

https://ga-beacon.appspot.com/UA-87461-7/django-dbbackup/home

Tests

Tests are stored in dbbackup.tests and for run them you must launch:

python runtests.py

In fact, runtests.py acts as a manage.py file and all Django command are available. So you could launch:

python runtests.py shell

For get a Python shell configured with the test project. Also all test command options are available and usable for run only some chosen tests. See Django test command documentation for more informations about it.

There are even functional tests:

./functional.sh

See documentation for details about

To run the tests across all supported versions of Django and Python, you can use Tox. Firstly install Tox:

pip install tox

To run the tests just use the command tox in the command line. If you want to run the tests against just one specific test environment you can run tox -e <testenv>. For example, to run the tests with Python3.3 and Django1.9 you would run:

tox -e py3.3-django1.9

The available test environments can be found in tox.ini.

Comments
  • Refactor to remove tight coupling with Django??

    Refactor to remove tight coupling with Django??

    Feature Request

    I'm looking for a generic Python package for database backups that I can use on all projects (not just Django).

    I can't find anything suitable and I was wondering whether there may be any appetite to make django-dbbackup more loosely coupled to Django?

    Describe the solution you'd like

    I've not dug deep enough to know for sure whether this is sensible, but I think I'm suggesting decoupling BaseCommandDBConnector and BaseDbBackupCommand so that they can be used in plain Python or with other frameworks by using alternative base classes.

    opened by isedwards 1
  • HINT: Use DROP ... CASCADE to also remove linked objects. Partitioning table causing error?

    HINT: Use DROP ... CASCADE to also remove linked objects. Partitioning table causing error?

    Is there a solution for this error?

    I use architect 0.6.0 for table partitioning. betik_app_staff_workinghourmodel_y2022m05 table is a partition table.

    Error: public.betik_app_staff_workinghourmodel_y2022m05 table depends on public.betik_app_staff_workinghourmodel table object

    HINT: Use DROP ... CASCADE to also remove linked objects.

    Traceback (most recent call last):
    [email protected]    |   File "manage.py", line 22, in <module>
    [email protected]    |     main()
    [email protected]    |   File "manage.py", line 18, in main
    [email protected]    |     execute_from_command_line(sys.argv)
    [email protected]    |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    [email protected]    |     utility.execute()
    [email protected]    |   File "/usr/local/lib/python3.8/site-packages/django/core/management/__init__.py", line 413, in execute
    [email protected]    |     self.fetch_command(subcommand).run_from_argv(self.argv)
    [email protected]    |   File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 354, in run_from_argv
    [email protected]    |     self.execute(*args, **cmd_options)
    [email protected]    |   File "/usr/local/lib/python3.8/site-packages/django/core/management/base.py", line 398, in execute
    [email protected]    |     output = self.handle(*args, **options)
    [email protected]    |   File "/usr/local/lib/python3.8/site-packages/dbbackup/management/commands/dbrestore.py", line 68, in handle
    [email protected]    |     self._restore_backup()
    [email protected]    |   File "/usr/local/lib/python3.8/site-packages/dbbackup/management/commands/dbrestore.py", line 118, in _restore_backup
    [email protected]    |     self.connector.restore_dump(input_file)
    [email protected]    |   File "/usr/local/lib/python3.8/site-packages/dbbackup/db/base.py", line 105, in restore_dump
    [email protected]    |     return self._restore_dump(dump)
    [email protected]    |   File "/usr/local/lib/python3.8/site-packages/dbbackup/db/postgresql.py", line 89, in _restore_dump
    [email protected]    |     return super()._restore_dump(dump)
    [email protected]    |   File "/usr/local/lib/python3.8/site-packages/dbbackup/db/postgresql.py", line 64, in _restore_dump
    [email protected]    |     stdout, stderr = self.run_command(cmd, stdin=dump, env=self.restore_env)
    [email protected]    |   File "/usr/local/lib/python3.8/site-packages/dbbackup/db/base.py", line 171, in run_command
    [email protected]    |     raise exceptions.CommandConnectorError(
    [email protected]    | dbbackup.db.exceptions.CommandConnectorError: Error running:  psql --dbname=postgresql://postgres_user:[email protected]:5432/db --set ON_ERROR_STOP=on --single-transaction db
    [email protected]    | ERROR:  Unable to remove table "public.betik_app_staff_workinghourmodel" because other objects depend on it
    [email protected]    | DETAIL:  **public.betik_app_staff_workinghourmodel_y2022m05** table depends on **public.betik_app_staff_workinghourmodel** table object
    
    opened by lidyum 0
  • fix: restore tempfile created 0 B

    fix: restore tempfile created 0 B

    Type of PR (feature, enhancement, bug fix, etc.)

    Description

    File coming from external server like FTP are not well restored due to this error: Restore tempfile created 0 B

    I don't know if the fix is the good way to do it.

    Fixes #463

    opened by rsommerard 3
  • Restore tempfile created: 0 B

    Restore tempfile created: 0 B

    Bug Report

    Running the dbrestore command raise an error which is due to Restore tempfile created: 0 B.

    Describe the bug

    I use an FTP server as backup storage. Backup is store without issue on the FTP while the restore fail. If I download the file and run the command by filling the local path via the -I params it works well.

    File is not encrypted, not compressed.

    The command fail at: https://github.com/jazzband/django-dbbackup/blob/af443c5026a480fffd33c4bbb6b4b1981e6700cb/dbbackup/db/base.py#L157-L163

    And here is the traceback:

    Finding latest backup
    Restoring backup for database 'default' and server 'None'
    Restoring: default-me-myproject-2022-10-05-141541.psql.bin
    Restore tempfile created: 0 B
    Are you sure you want to continue? [Y/n] Y
    Traceback (most recent call last):
      File "/home/me/myproject/.venv/lib/python3.8/site-packages/dbbackup/db/base.py", line 157, in run_command
        process = Popen(
      File "/usr/lib/python3.8/subprocess.py", line 808, in __init__
        errread, errwrite) = self._get_handles(stdin, stdout, stderr)
      File "/usr/lib/python3.8/subprocess.py", line 1477, in _get_handles
        p2cread = stdin.fileno()
    io.UnsupportedOperation: fileno
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/lib/python3.8/runpy.py", line 194, in _run_module_as_main
        return _run_code(code, main_globals, None,
      File "/usr/lib/python3.8/runpy.py", line 87, in _run_code
        exec(code, run_globals)
      File "/home/me/.vscode/extensions/ms-python.python-2022.14.0/pythonFiles/lib/python/debugpy/adapter/../../debugpy/launcher/../../debugpy/__main__.py", line 39, in <module>
        cli.main()
      File "/home/me/.vscode/extensions/ms-python.python-2022.14.0/pythonFiles/lib/python/debugpy/adapter/../../debugpy/launcher/../../debugpy/../debugpy/server/cli.py", line 430, in main
        run()
      File "/home/me/.vscode/extensions/ms-python.python-2022.14.0/pythonFiles/lib/python/debugpy/adapter/../../debugpy/launcher/../../debugpy/../debugpy/server/cli.py", line 284, in run_file
        runpy.run_path(target, run_name="__main__")
      File "/home/me/.vscode/extensions/ms-python.python-2022.14.0/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 321, in run_path
        return _run_module_code(code, init_globals, run_name,
      File "/home/me/.vscode/extensions/ms-python.python-2022.14.0/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 135, in _run_module_code
        _run_code(code, mod_globals, init_globals,
      File "/home/me/.vscode/extensions/ms-python.python-2022.14.0/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_runpy.py", line 124, in _run_code
        exec(code, run_globals)
      File "/home/me/myproject/manage.py", line 25, in <module>
        execute_from_command_line(sys.argv)
      File "/home/me/myproject/.venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
        utility.execute()
      File "/home/me/myproject/.venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 413, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
      File "/home/me/myproject/.venv/lib/python3.8/site-packages/django/core/management/base.py", line 354, in run_from_argv
        self.execute(*args, **cmd_options)
      File "/home/me/myproject/.venv/lib/python3.8/site-packages/django/core/management/base.py", line 398, in execute
        output = self.handle(*args, **options)
      File "/home/me/myproject/.venv/lib/python3.8/site-packages/dbbackup/management/commands/dbrestore.py", line 68, in handle
        self._restore_backup()
      File "/home/me/myproject/.venv/lib/python3.8/site-packages/dbbackup/management/commands/dbrestore.py", line 118, in _restore_backup
        self.connector.restore_dump(input_file)
      File "/home/me/myproject/.venv/lib/python3.8/site-packages/dbbackup/db/base.py", line 105, in restore_dump
        return self._restore_dump(dump)
      File "/home/me/myproject/.venv/lib/python3.8/site-packages/dbbackup/db/postgresql.py", line 124, in _restore_dump
        stdout, stderr = self.run_command(cmd, stdin=dump, env=self.restore_env)
      File "/home/me/myproject/.venv/lib/python3.8/site-packages/dbbackup/db/base.py", line 180, in run_command
        raise exceptions.CommandConnectorError(
    dbbackup.db.exceptions.CommandConnectorError: Error running:  pg_restore --dbname=postgresql://postgres:postgre[email protected]:30032/postgres --single-transaction --clean 
    fileno
    

    To Reproduce

    1. Run a local FTP server docker run -e FTP_USER_NAME=foo -e FTP_USER_PASS=pass -e FTP_USER_HOME=/home/foo -p 21:21 -p 30000-30009:30000-30009 -d stilliard/pure-ftpd
    2. Add the configuration
    DBBACKUP_CONNECTORS = {
        "default": {"CONNECTOR": "dbbackup.db.postgresql.PgDumpBinaryConnector"}
    }
    DBBACKUP_STORAGE = "storages.backends.ftp.FTPStorage"
    DBBACKUP_STORAGE_OPTIONS = {"location": "ftp://foo:[email protected]:21"}
    
    1. Backup the db: python manage.py dbbackup
    2. Restore: python manage.py dbrestore

    Versions

    • django-dbbackup==4.0.2

    • django-storages==1.13.1

    • Django==3.2.7

    • Python: 3.8

    • OS: Ubuntu 22.04.1 LTS x86_64

    Misc

    The mediarestore command works with the same params (no compression, not encrypted)

    opened by rsommerard 1
  • Fixed TypeError when performing SQLite dbbackup

    Fixed TypeError when performing SQLite dbbackup

    Fixed TypeError when performing SQLite dbbackup

    Description

    Running python manage.py dbbackup with an SQLite database returned TypeError: a bytes-like object is required, not 'str'.

    (example-venv-3.10.5) [email protected] example % python manage.py dbbackup
    TypeError: a bytes-like object is required, not 'str'
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/dbbackup/utils.py", line 120, in wrapper
        func(*args, **kwargs)
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/dbbackup/management/commands/dbbackup.py", line 93, in handle
        self._save_new_backup(database)
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/dbbackup/management/commands/dbbackup.py", line 106, in _save_new_backup
        outputfile = self.connector.create_dump()
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/dbbackup/db/sqlite.py", line 67, in create_dump
        self._write_dump(dump_file)
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/dbbackup/db/sqlite.py", line 42, in _write_dump
        fileobj.write(f"{sql};\n")
      File "/Users/sid/.pyenv/versions/3.10.5/lib/python3.10/tempfile.py", line 771, in write
        rv = file.write(s)
    
    Traceback (most recent call last):
      File "/Users/sid/pycharm-workspace/Example/example/manage.py", line 14, in <module>
        execute_from_command_line(sys.argv)
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
        utility.execute()
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/django/core/management/__init__.py", line 440, in execute
        self.fetch_command(subcommand).run_from_argv(self.argv)
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/django/core/management/base.py", line 414, in run_from_argv
        self.execute(*args, **cmd_options)
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/django/core/management/base.py", line 460, in execute
        output = self.handle(*args, **options)
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/dbbackup/utils.py", line 120, in wrapper
        func(*args, **kwargs)
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/dbbackup/management/commands/dbbackup.py", line 93, in handle
        self._save_new_backup(database)
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/dbbackup/management/commands/dbbackup.py", line 106, in _save_new_backup
        outputfile = self.connector.create_dump()
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/dbbackup/db/sqlite.py", line 67, in create_dump
        self._write_dump(dump_file)
      File "/Users/sid/.pyenv/versions/3.10.5/envs/example-venv-3.10.5/lib/python3.10/site-packages/dbbackup/db/sqlite.py", line 42, in _write_dump
        fileobj.write(f"{sql};\n")
      File "/Users/sid/.pyenv/versions/3.10.5/lib/python3.10/tempfile.py", line 771, in write
        rv = file.write(s)
    TypeError: a bytes-like object is required, not 'str'
    

    Fix

    By changing line 42 of the db/sqlite.py to write a UTF-8 encoded byte-type object, the backup is carried out without any errors.

    opened by SidSidSid16 3
Releases(4.0.2)
  • 4.0.2(Sep 27, 2022)

    What's Changed

    • Docs: Fix removed host option, explain new options by @bittner in https://github.com/jazzband/django-dbbackup/pull/333
    • dbbackup.db.postgres typo fix by @LeeHanYeong in https://github.com/jazzband/django-dbbackup/pull/341
    • Replace ugettext_lazy with gettext_lazy by @sumanthratna in https://github.com/jazzband/django-dbbackup/pull/342
    • Fix broken link by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/349
    • Remove base_url in docs as it's not used by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/348
    • Update commands.rst to add missing command by @sumit4613 in https://github.com/jazzband/django-dbbackup/pull/337
    • Add changelog by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/351
    • Add documentation for django-storage by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/352
    • Fix headings for changelog by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/354
    • Changed logging settings from settings.py to late init by @asaf-kali in https://github.com/jazzband/django-dbbackup/pull/332
    • Drop django 1.11 and python 2.7 by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/353
    • Fix authentication error when postgres is password protected by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/361
    • using exclude-table-data instead by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/363
    • Add some issue templates by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/366
    • Replace travis with github actions by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/368
    • 'six' package dependency removed by @jerinpetergeorge in https://github.com/jazzband/django-dbbackup/pull/371
    • Add support for exclude tables data in the command interface by @KessoumML in https://github.com/jazzband/django-dbbackup/pull/375
    • Make the binary connector the default by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/339
    • Env password is no longer used since #361 by @jonathan-s in https://github.com/jazzband/django-dbbackup/pull/362
    • auth source added in mongodb. authentication issue fixed with mongodb… by @Ajaysainisd in https://github.com/jazzband/django-dbbackup/pull/379
    • Add support for Python 3.9-3.10 and Django 3.2 by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/401
    • Update CHANGELOG by @sumanthratna in https://github.com/jazzband/django-dbbackup/pull/376
    • Clean up README by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/407
    • Add support for Django 4.0 by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/408
    • Update changelog for PRs merged since 3.3.0 release by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/410
    • Include long description in package metadata by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/411
    • Add build environment by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/412
    • Fix RemovedInDjango41Warning related to default_app_config by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/413
    • Release 4.0.0b0 by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/414
    • Fix GitHub Actions configuration by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/419
    • Enable functional tests in CI by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/420
    • Update settings.py comment by @aaronvarghese in https://github.com/jazzband/django-dbbackup/pull/427
    • Jazzband transfer tasks by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/418
    • Add Jazzband contributing guidelines by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/435
    • Create release CI by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/436
    • Fix docs build and URLs by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/437
    • Refactoring and tooling by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/438
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jazzband/django-dbbackup/pull/439
    • Include package data to fix docs and pypi by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/440
    • Set package as not zip_safe by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/441
    • Fix manifest warning by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/442
    • Move VERSION source directory by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/443
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jazzband/django-dbbackup/pull/444
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jazzband/django-dbbackup/pull/446
    • Correct spelling mistakes by @EdwardBetts in https://github.com/jazzband/django-dbbackup/pull/447
    • Correct grammar in Docs and ReadMe by @millerthegorilla in https://github.com/jazzband/django-dbbackup/pull/448
    • fix GPG manual anchor and typo by @millerthegorilla in https://github.com/jazzband/django-dbbackup/pull/449
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jazzband/django-dbbackup/pull/450
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in https://github.com/jazzband/django-dbbackup/pull/451
    • v4.0.1 by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/453
    • support for prometheus wrapped dbs by @tsundokum in https://github.com/jazzband/django-dbbackup/pull/455
    • Backup of SQLite fail if there are Virtual Tables (e.g. FTS tables). by @xbello in https://github.com/jazzband/django-dbbackup/pull/458
    • Closes #460: python-gnupg version increase breaks unencrypt_file func… by @chambersh1129 in https://github.com/jazzband/django-dbbackup/pull/461
    • v4.0.2 by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/462

    New Contributors

    • @bittner made their first contribution in https://github.com/jazzband/django-dbbackup/pull/333
    • @LeeHanYeong made their first contribution in https://github.com/jazzband/django-dbbackup/pull/341
    • @sumanthratna made their first contribution in https://github.com/jazzband/django-dbbackup/pull/342
    • @jonathan-s made their first contribution in https://github.com/jazzband/django-dbbackup/pull/349
    • @sumit4613 made their first contribution in https://github.com/jazzband/django-dbbackup/pull/337
    • @asaf-kali made their first contribution in https://github.com/jazzband/django-dbbackup/pull/332
    • @jerinpetergeorge made their first contribution in https://github.com/jazzband/django-dbbackup/pull/371
    • @KessoumML made their first contribution in https://github.com/jazzband/django-dbbackup/pull/375
    • @Ajaysainisd made their first contribution in https://github.com/jazzband/django-dbbackup/pull/379
    • @johnthagen made their first contribution in https://github.com/jazzband/django-dbbackup/pull/401
    • @aaronvarghese made their first contribution in https://github.com/jazzband/django-dbbackup/pull/427
    • @Archmonger made their first contribution in https://github.com/jazzband/django-dbbackup/pull/418
    • @pre-commit-ci made their first contribution in https://github.com/jazzband/django-dbbackup/pull/439
    • @EdwardBetts made their first contribution in https://github.com/jazzband/django-dbbackup/pull/447
    • @millerthegorilla made their first contribution in https://github.com/jazzband/django-dbbackup/pull/448
    • @tsundokum made their first contribution in https://github.com/jazzband/django-dbbackup/pull/455
    • @xbello made their first contribution in https://github.com/jazzband/django-dbbackup/pull/458
    • @chambersh1129 made their first contribution in https://github.com/jazzband/django-dbbackup/pull/461

    Full Changelog: https://github.com/jazzband/django-dbbackup/compare/3.3.0...4.0.2

    Source code(tar.gz)
    Source code(zip)
  • 4.0.0rc1(May 10, 2022)

    What's Changed

    • As of this version, dbbackup is now within Jazzband! This version tests our Jazzband release CI, and adds miscellaneous refactoring/cleanup.
    • Fix GitHub Actions configuration by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/419
    • Enable functional tests in CI by @johnthagen in https://github.com/jazzband/django-dbbackup/pull/420
    • Update settings.py comment by @aaronvarghese in https://github.com/jazzband/django-dbbackup/pull/427
    • Jazzband transfer tasks by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/418
    • Refactoring and tooling by @Archmonger in https://github.com/jazzband/django-dbbackup/pull/438

    New Contributors

    • @aaronvarghese made their first contribution in https://github.com/jazzband/django-dbbackup/pull/427
    • @Archmonger made their first contribution in https://github.com/jazzband/django-dbbackup/pull/418

    Full Changelog: https://github.com/jazzband/django-dbbackup/compare/4.0.0b0...4.0.0rc1

    Source code(tar.gz)
    Source code(zip)
  • 4.0.0b0(Dec 19, 2021)

    What's Changed

    • Docs: Fix removed host option, explain new options by @bittner in https://github.com/django-dbbackup/django-dbbackup/pull/333
    • dbbackup.db.postgres typo fix by @LeeHanYeong in https://github.com/django-dbbackup/django-dbbackup/pull/341
    • Replace ugettext_lazy with gettext_lazy by @sumanthratna in https://github.com/django-dbbackup/django-dbbackup/pull/342
    • Fix broken link by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/349
    • Remove base_url in docs as it's not used by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/348
    • Update commands.rst to add missing command by @sumit4613 in https://github.com/django-dbbackup/django-dbbackup/pull/337
    • Add changelog by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/351
    • Add documentation for django-storage by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/352
    • Fix headings for changelog by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/354
    • Changed logging settings from settings.py to late init by @asaf-kali in https://github.com/django-dbbackup/django-dbbackup/pull/332
    • Drop django 1.11 and python 2.7 by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/353
    • Fix authentication error when postgres is password protected by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/361
    • using exclude-table-data instead by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/363
    • Add some issue templates by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/366
    • Replace travis with github actions by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/368
    • 'six' package dependency removed by @jerinpetergeorge in https://github.com/django-dbbackup/django-dbbackup/pull/371
    • Add support for exclude tables data in the command interface by @KessoumML in https://github.com/django-dbbackup/django-dbbackup/pull/375
    • Make the binary connector the default by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/339
    • Env password is no longer used since #361 by @jonathan-s in https://github.com/django-dbbackup/django-dbbackup/pull/362
    • auth source added in mongodb. authentication issue fixed with mongodb… by @Ajaysainisd in https://github.com/django-dbbackup/django-dbbackup/pull/379
    • Add support for Python 3.9-3.10 and Django 3.2 by @johnthagen in https://github.com/django-dbbackup/django-dbbackup/pull/401
    • Update CHANGELOG by @sumanthratna in https://github.com/django-dbbackup/django-dbbackup/pull/376
    • Clean up README by @johnthagen in https://github.com/django-dbbackup/django-dbbackup/pull/407
    • Add support for Django 4.0 by @johnthagen in https://github.com/django-dbbackup/django-dbbackup/pull/408
    • Update changelog for PRs merged since 3.3.0 release by @johnthagen in https://github.com/django-dbbackup/django-dbbackup/pull/410
    • Include long description in package metadata by @johnthagen in https://github.com/django-dbbackup/django-dbbackup/pull/411
    • Add build environment by @johnthagen in https://github.com/django-dbbackup/django-dbbackup/pull/412
    • Fix RemovedInDjango41Warning related to default_app_config by @johnthagen in https://github.com/django-dbbackup/django-dbbackup/pull/413
    • Release 4.0.0b0 by @johnthagen in https://github.com/django-dbbackup/django-dbbackup/pull/414

    New Contributors

    • @bittner made their first contribution in https://github.com/django-dbbackup/django-dbbackup/pull/333
    • @LeeHanYeong made their first contribution in https://github.com/django-dbbackup/django-dbbackup/pull/341
    • @sumanthratna made their first contribution in https://github.com/django-dbbackup/django-dbbackup/pull/342
    • @jonathan-s made their first contribution in https://github.com/django-dbbackup/django-dbbackup/pull/349
    • @sumit4613 made their first contribution in https://github.com/django-dbbackup/django-dbbackup/pull/337
    • @asaf-kali made their first contribution in https://github.com/django-dbbackup/django-dbbackup/pull/332
    • @jerinpetergeorge made their first contribution in https://github.com/django-dbbackup/django-dbbackup/pull/371
    • @KessoumML made their first contribution in https://github.com/django-dbbackup/django-dbbackup/pull/375
    • @Ajaysainisd made their first contribution in https://github.com/django-dbbackup/django-dbbackup/pull/379
    • @johnthagen made their first contribution in https://github.com/django-dbbackup/django-dbbackup/pull/401

    Full Changelog: https://github.com/django-dbbackup/django-dbbackup/compare/3.3.0...4.0.0b0

    Source code(tar.gz)
    Source code(zip)
Management commands to help backup and restore your project database and media files

Django Database Backup This Django application provides management commands to help backup and restore your project database and media files with vari

687 Jan 04, 2023
Convert shellcode generated using pe_2_shellcode to cdb format.

pe2shc-to-cdb This tool will convert shellcode generated using pe_to_shellcode to cdb format. Cdb.exe is a LOLBIN which can help evade detection & app

mrd0x 75 Jan 05, 2023
A command line application, written in Python, for interacting with Spotify.

spotify-py-cli A command line application, written in Python, for interacting with Spotify. The primary purpose behind developing this app was to gain

Drew Loukusa 0 Oct 07, 2021
A python package to display progress of loops to the user

ProgressBars A python package to display progress of loops to the user. Installation This package can be installed using pip. pip install progressbars

Matthias 3 Jan 16, 2022
A dilligent command line tool to publish ads on ebay-kleinanzeigen.de

kleinanzeigen-bot Feedback and high-quality pull requests are highly welcome! About Installation Usage Development Notes License About kleinanzeigen-b

83 Dec 26, 2022
Todo - You could use terminal to set your todo

Python Tutorial You can learn how to build a terminal application(CLI applicatio

29 Jun 29, 2022
Just a shell writed on Python

HIGHSHELL (also hSH or HS) Just a shell writed on Python Send bug report • How to use the shell • Broked features • Licenses How to use the shell Inst

0LungSkill0 2 Jan 04, 2022
A simple CLI application helps you to find giant files that are eating up your system storage

Large file finder Sometimes it's very hard to find if some giant files are eating up your system storage. We might need to hunt those down. This simpl

Rahul Baruri 5 Nov 18, 2022
CryptoCo-py is a Python CLI application that uses CoinGecko API to allow the user to query cryptocurrency information by typing simple commands.

CryptoCo-py is a Python CLI application that uses CoinGecko API to allow the user to query cryptocurrency information by typing simple com

1 Jan 10, 2022
Python CLI script to solve wordles.

Wordle Solver Python CLI script to solve wordles. You need at least python 3.8 installed to run this. No dependencies. Sample Usage Let's say the word

Rachel Brindle 1 Jan 16, 2022
Python Command Line Application (CLI) using Typer, SQLModel, Async-PostgrSQL, and FastAPI

pyflycli is a command-line interface application built with Typer that allows you to view flights above your location.

Kevin Zehnder 14 Oct 01, 2022
Splitgraph command line client and python library

Splitgraph Overview Splitgraph is a tool for building, versioning and querying reproducible datasets. It's inspired by Docker and Git, so it feels fam

Splitgraph 313 Dec 24, 2022
A new kind of Progress Bar, with real time throughput, eta and very cool animations!

A new kind of Progress Bar, with real time throughput, eta and very cool animations!

Rogério Sampaio de Almeida 4.1k Jan 08, 2023
PyArmor is a command line tool used to obfuscate python scripts

PyArmor is a command line tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts.

Dashingsoft 2k Jan 07, 2023
A web shell client written in python.

Webshell client A webshell client written in python. Only works well for linux for the time being. Why? Because there are too many heavy webshells. So

tchar 1 Dec 07, 2021
A CLI tool for using GLIDE to generate images from text.

Text-Glided-Diffusion Installation First clone this repository: git clone https://github.com/afiaka87/text-glided-diffusion.git cd text-glided-diffusi

Clay Mullis 68 Dec 30, 2022
A command line connect 4 game against a minimax agent.

A command line connect 4 game against a minimax agent.

1 Oct 17, 2021
Automaton - python script to execute bash command based on changes in size of a file.

automaton python script to execute given command = everytime size of a given file changes,hence everytime a file is modified.(almost) download automa

asrar bhat 1 Jan 03, 2022
Simple CLI prompt for easy I/O with OpenAI's API

openai-cli-prompt Simple CLI prompt for easy I/O with OpenAI's API Quickstart Create a .env file with: OPENAI_API_KEY=Your OpenAI API Key Configure

Erik Nomitch 1 Oct 12, 2021