From 92aa602cbe5eabffa315e10418e07f71ea96702c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 24 Oct 2025 09:45:29 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20backup=5Fdatabase=20=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=20sudo=20-u=20postgres?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/develop/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/develop/tasks.py b/apps/develop/tasks.py index 04102027..51a79edb 100755 --- a/apps/develop/tasks.py +++ b/apps/develop/tasks.py @@ -14,7 +14,7 @@ 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( + command = 'echo "{}" | sudo -S -u postgres pg_dump "user={} password={} dbname={}" > {}/bak_{}.sql'.format( SD_PWD, DATABASES["default"]["USER"], DATABASES["default"]["PASSWORD"], DATABASES["default"]["NAME"], BACKUP_PATH + "/database", name ) completed = subprocess.run(command, shell=True, capture_output=True, text=True) From 95d6dfbf6adad5e845f12f5723798b930d2246b0 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 24 Oct 2025 10:46:58 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=E6=89=A7=E8=A1=8C=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93=E5=A4=87=E4=BB=BD=E6=97=B6=E6=8E=92=E9=99=A4?= =?UTF-8?q?=E6=8C=87=E5=AE=9A=E8=B6=85=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/develop/tasks.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/develop/tasks.py b/apps/develop/tasks.py index 51a79edb..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 -u postgres 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: