diff --git a/apps/develop/tasks.py b/apps/develop/tasks.py index 04102027..4cd5fc1b 100755 --- a/apps/develop/tasks.py +++ b/apps/develop/tasks.py @@ -2,6 +2,7 @@ from __future__ import absolute_import, unicode_literals from celery import shared_task import subprocess from server.settings import DATABASES, BACKUP_PATH, SH_PATH, SD_PWD +from django.conf import settings import logging myLogger = logging.getLogger('log') @@ -14,8 +15,10 @@ def backup_database(): import datetime name = datetime.datetime.now().strftime("%Y%m%d%H%M%S") - command = 'echo "{}" | sudo -S pg_dump "user={} password={} dbname={}" > {}/bak_{}.sql'.format( - SD_PWD, DATABASES["default"]["USER"], DATABASES["default"]["PASSWORD"], DATABASES["default"]["NAME"], BACKUP_PATH + "/database", name + exclude_tables = getattr(settings, 'EXCLUDE_TABLE_DATA', []) + exclude_str = ' '.join([f"--exclude-table-data={table}" for table in exclude_tables]) + command = 'echo "{}" | sudo -S -u postgres pg_dump {} "user={} password={} dbname={}" > {}/bak_{}.sql'.format( + SD_PWD, exclude_str, DATABASES["default"]["USER"], DATABASES["default"]["PASSWORD"], DATABASES["default"]["NAME"], BACKUP_PATH + "/database", name ) completed = subprocess.run(command, shell=True, capture_output=True, text=True) if completed.returncode != 0: