feat: 执行数据库备份时排除指定超表

This commit is contained in:
caoqianming 2025-10-24 10:46:58 +08:00
parent e4ce5271eb
commit 95d6dfbf6a
1 changed files with 5 additions and 2 deletions

View File

@ -2,6 +2,7 @@ from __future__ import absolute_import, unicode_literals
from celery import shared_task from celery import shared_task
import subprocess import subprocess
from server.settings import DATABASES, BACKUP_PATH, SH_PATH, SD_PWD from server.settings import DATABASES, BACKUP_PATH, SH_PATH, SD_PWD
from django.conf import settings
import logging import logging
myLogger = logging.getLogger('log') myLogger = logging.getLogger('log')
@ -14,8 +15,10 @@ def backup_database():
import datetime import datetime
name = datetime.datetime.now().strftime("%Y%m%d%H%M%S") 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( exclude_tables = getattr(settings, 'EXCLUDE_TABLE_DATA', [])
SD_PWD, DATABASES["default"]["USER"], DATABASES["default"]["PASSWORD"], DATABASES["default"]["NAME"], BACKUP_PATH + "/database", name 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) completed = subprocess.run(command, shell=True, capture_output=True, text=True)
if completed.returncode != 0: if completed.returncode != 0: