跳转到主要内容

管理命令,帮助备份和还原项目数据库和媒体。

项目描述

Django 数据库备份

https://github.com/jazzband/django-dbbackup/actions/workflows/build.yml/badge.svg Documentation Status https://codecov.io/gh/jazzband/django-dbbackup/branch/master/graph/badge.svg?token=zaYmStcsuX Jazzband

这个 Django 应用提供了管理命令,可以帮助您使用各种存储(如 Amazon S3、Dropbox、本地文件存储或任何 Django 存储)备份和恢复项目数据库和媒体文件。

它旨在

  • 允许您使用 GPG 签名和加密来保护备份

  • 使用压缩进行归档

  • 轻松处理远程归档

  • 保持您的开发数据库最新

  • 使用 Crontab 或 Celery 设置自动化备份

文档

请参阅我们的官方文档:Read The Docs

为什么使用 DBBackup

此软件并不是重新发明轮子,简单来说,它是 Django 项目和备份存储之间的管道。它尝试使用传统的导出 & 恢复机制,应用压缩和/或加密,并使用您想要的存储系统。

它提供了一个简单的界面来备份和恢复数据库或媒体文件。

管理命令

dbbackup

将数据库备份到指定的存储。默认情况下,这将备份 settings.py 文件中指定的所有数据库,并且不会删除任何旧备份。您可以可选地指定要包含在备份文件名中的服务器名称。

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

从指定的存储中恢复数据库。默认情况下,这将查找最新的备份并从该备份中恢复。如果您想备份由不同服务器创建的数据库映像,您可以可选地指定服务器名称。您还可以指定一个明确的本地文件以从中备份。

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

通过逐个获取媒体文件并将其包含在 TAR 文件中,备份媒体文件。

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

从存储备份中恢复媒体文件到您的媒体存储。

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

测试

测试存储在 dbbackup.tests 中,要运行它们,您必须启动

python runtests.py

实际上,runtests.py 作为 manage.py 文件,所有 Django 命令都可用。因此,您可以启动

python runtests.py shell

以获取配置了测试项目的 Python shell。此外,所有测试命令选项都可用并可使用,以仅运行选择的一组测试。有关更多信息,请参阅 Django 测试命令文档

甚至还有功能测试

./functional.sh

请参阅文档以获取详细信息。

要跨所有支持的 Django 和 Python 版本运行测试,您可以使用 Tox。首先安装 Tox

pip install tox

要运行测试,只需在命令行中输入 tox 命令。如果您只想针对特定的测试环境运行测试,可以运行 tox -e <testenv>。例如,要使用 Python3.9 和 Django3.2 运行测试,您将运行

tox -e py39-django32

可用的测试环境可以在 tox.ini 中找到。

贡献

Jazzband

这是一个 Jazzband 项目。通过贡献,您同意遵守 贡献者行为准则 并遵循 指南

所有贡献都受到欢迎,包括建议、问题、错误和改进,都通过 GitHub issues 系统跟踪,并通过 pull requests 提交补丁。

我们使用 GitHub Actions 作为持续集成工具。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

django_dbbackup-4.2.1.tar.gz (44.9 kB 查看哈希值)

上传时间

构建分发

django_dbbackup-4.2.1-py3-none-any.whl (59.1 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页