# Django DB S3 Backup
A robust Django library for automated PostgreSQL database backups with local and S3 storage support, featuring scheduled backups and restoration capabilities.
## Features
- 🗄️ Automated database backups
- ⏰ Scheduled backups using cron syntax
- 💾 Local backup storage with rotation
- ☁️ S3 backup storage with rotation
- 🔄 Easy restoration process
- 🔒 Secure credential management
## Installation
```bash
pip install django-db-s3-backup
## Configuration
#Add to your INSTALLED_APPS
INSTALLED_APPS = [
...
'django_db_s3_backup.apps.DBS3BackupConfig',
'django_apscheduler',
...
]
#Database Configuration
# Optional - falls back to default Django DB settings if not specified
DB_BACKUP_HOST = 'backup.db.example.com'
DB_BACKUP_PORT = '5432'
DB_BACKUP_NAME = 'backup_db'
DB_BACKUP_USER = 'backup_user'
DB_BACKUP_PASSWORD = 'securepassword'
#Local Storage
DB_BACKUP_LOCAL_DIR = os.path.join(BASE_DIR, 'db_backups') # Local backup directory
DB_BACKUP_MAX_LOCAL = 5 # Max local backups to keep
#S3 Storage
DB_BACKUP_S3_ENABLED = True # Set False to disable S3
DB_BACKUP_S3_BUCKET_NAME = 'your-backup-bucket'
DB_BACKUP_S3_ACCESS_KEY = 'your-access-key' # Consider using env vars
DB_BACKUP_S3_SECRET_KEY = 'your-secret-key' # Consider using env vars
DB_BACKUP_S3_DIR = 'backups' # S3 path prefix
DB_BACKUP_MAX_S3 = 30 # Max S3 backups to keep
#Scheduling
DB_BACKUP_SCHEDULE_ENABLED = True # Enable scheduled backups, False by default
DB_BACKUP_SCHEDULE_CRON = '0 2 * * *' # 2 AM daily (cron syntax)
Raw data
{
"_id": null,
"home_page": "https://github.com/Taofeeq97/postgreSQL_backup.git",
"name": "django-db-s3-backup",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "django database backup s3_access",
"author": "Otu Taofeeq",
"author_email": "otutaofeeqi@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/07/e3/aea805f27dbe544dec23fda0c3a65fab479ab39a45c2d7ee169cd53a7101/django_db_s3_backup-0.1.3.tar.gz",
"platform": null,
"description": "# Django DB S3 Backup\r\n\r\nA robust Django library for automated PostgreSQL database backups with local and S3 storage support, featuring scheduled backups and restoration capabilities.\r\n\r\n## Features\r\n\r\n- \ud83d\uddc4\ufe0f Automated database backups\r\n- \u23f0 Scheduled backups using cron syntax\r\n- \ud83d\udcbe Local backup storage with rotation\r\n- \u2601\ufe0f S3 backup storage with rotation\r\n- \ud83d\udd04 Easy restoration process\r\n- \ud83d\udd12 Secure credential management\r\n\r\n## Installation\r\n\r\n```bash\r\npip install django-db-s3-backup\r\n\r\n\r\n\r\n## Configuration\r\n#Add to your INSTALLED_APPS\r\nINSTALLED_APPS = [\r\n ...\r\n 'django_db_s3_backup.apps.DBS3BackupConfig',\r\n 'django_apscheduler', \r\n ...\r\n]\r\n\r\n\r\n#Database Configuration\r\n# Optional - falls back to default Django DB settings if not specified\r\nDB_BACKUP_HOST = 'backup.db.example.com'\r\nDB_BACKUP_PORT = '5432'\r\nDB_BACKUP_NAME = 'backup_db'\r\nDB_BACKUP_USER = 'backup_user'\r\nDB_BACKUP_PASSWORD = 'securepassword'\r\n\r\n\r\n#Local Storage\r\nDB_BACKUP_LOCAL_DIR = os.path.join(BASE_DIR, 'db_backups') # Local backup directory\r\nDB_BACKUP_MAX_LOCAL = 5 # Max local backups to keep\r\n\r\n\r\n#S3 Storage\r\n\r\nDB_BACKUP_S3_ENABLED = True # Set False to disable S3\r\nDB_BACKUP_S3_BUCKET_NAME = 'your-backup-bucket'\r\nDB_BACKUP_S3_ACCESS_KEY = 'your-access-key' # Consider using env vars\r\nDB_BACKUP_S3_SECRET_KEY = 'your-secret-key' # Consider using env vars\r\nDB_BACKUP_S3_DIR = 'backups' # S3 path prefix\r\nDB_BACKUP_MAX_S3 = 30 # Max S3 backups to keep\r\n\r\n\r\n\r\n#Scheduling\r\nDB_BACKUP_SCHEDULE_ENABLED = True # Enable scheduled backups, False by default\r\nDB_BACKUP_SCHEDULE_CRON = '0 2 * * *' # 2 AM daily (cron syntax)\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Django database backup with S3 storage and scheduling",
"version": "0.1.3",
"project_urls": {
"Homepage": "https://github.com/Taofeeq97/postgreSQL_backup.git"
},
"split_keywords": [
"django",
"database",
"backup",
"s3_access"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b57b06581bc101f47ee65e18966bf0eddc110c96dee9f00b95e1c11ce5a57a9f",
"md5": "ace9d5f0c318d605f1d0715fa0b9a1f8",
"sha256": "0a28b70c10e486d3272ea9c572d8f8ec34399b22d24d4185491d2a6137d3ca8c"
},
"downloads": -1,
"filename": "django_db_s3_backup-0.1.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ace9d5f0c318d605f1d0715fa0b9a1f8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 13203,
"upload_time": "2025-08-11T08:48:06",
"upload_time_iso_8601": "2025-08-11T08:48:06.162332Z",
"url": "https://files.pythonhosted.org/packages/b5/7b/06581bc101f47ee65e18966bf0eddc110c96dee9f00b95e1c11ce5a57a9f/django_db_s3_backup-0.1.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "07e3aea805f27dbe544dec23fda0c3a65fab479ab39a45c2d7ee169cd53a7101",
"md5": "7e8976afeb410a1878bd89dd7f2a1054",
"sha256": "5eaa010f9dea5b726c966e82a354796ab20634084c63b98d0bc37b19988c2006"
},
"downloads": -1,
"filename": "django_db_s3_backup-0.1.3.tar.gz",
"has_sig": false,
"md5_digest": "7e8976afeb410a1878bd89dd7f2a1054",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 10780,
"upload_time": "2025-08-11T08:48:07",
"upload_time_iso_8601": "2025-08-11T08:48:07.852047Z",
"url": "https://files.pythonhosted.org/packages/07/e3/aea805f27dbe544dec23fda0c3a65fab479ab39a45c2d7ee169cd53a7101/django_db_s3_backup-0.1.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-11 08:48:07",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Taofeeq97",
"github_project": "postgreSQL_backup",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "django-db-s3-backup"
}