数据库备份脚本开发与定制

一个 Bash 或 Python 脚本,备份您的 MySQL 或 PostgreSQL 数据库,只保留您选定的副本

通常15分钟内完成包含修改质量检查
套餐
付款保障详情
  • 套餐内的修改免费。
  • 如果交付后 3 天内您未作回应,工作将自动验收。

付款时款项会被冻结,仅在您验收后结算。

一个 Bash 或 Python 脚本,备份您的 MySQL 或 PostgreSQL 数据库,只保留您选定的副本

成果示例

标准版套餐示例

把 9 家门店的月度销售文件合并成一份 Excel 报表

如何运行

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  文件夹:sales/2026-10,找到 9 个文件
2026-11-02 09:14:03 INFO  shop-01.csv:1,284 行
2026-11-02 09:14:04 INFO  shop-02.xlsx:967 行
2026-11-02 09:14:04 WARN  shop-07.csv:跳过 3 行缺少价格的记录(第 88、412、913 行)
2026-11-02 09:14:05 INFO  完成:10,412 行 -> report-2026-10.xlsx(工作表“销售”和“汇总”)

改设置,不改代码

每家门店的列名都写在 settings.ini 中,所以新增一家门店或某列改了名,只需在那里改一行:

[columns]
date = 日期, 销售日期, 日
product = 商品, 品名, 名称
quantity = 数量, 件数, 个数
price = 价格, 单价

部分代码

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """读取一家门店的文件,并把列名改为报表使用的列名。"""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name}:找不到“{name}”对应的列(已查找 {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

**文件:**一个 ZIP 压缩包,内含 merge_sales.py(310 行)、settings.ini、requirements.txt 和 README,说明如何安装 Python、运行脚本以及日志中每条消息的含义。客户在自己的电脑上运行。

**客户:**一家拥有 9 家门店的小型文具连锁店;每家门店每月以 CSV 或 Excel 文件发送当月销售数据,各自的列名略有不同。 **任务:**一个脚本,读取文件夹中的所有文件,把各列统一成同一格式,并生成一份 Excel 报表,包含全部销售记录和一张按门店汇总的工作表。

客户及所有信息均为虚构。

服务介绍

一个没有定期备份的数据库,只差一次出错的更新或一块写满的磁盘,就会丢失订单、文章或客户记录。这个脚本按您服务器的情况用 Bash 或 Python 编写,使用数据库自带的工具(mysqldump 或 pg_dump)对您的 MySQL、MariaDB 或 PostgreSQL 数据库做完整导出,压缩后以日期命名,并只保留您的规则规定的副本,例如 7 份每日、4 份每周和 6 份每月备份;较旧的副本只会按这些规则删除。数据库密码写在您在服务器上填写的标准选项文件(.my.cnf 或 .pgpass)中,绝不写进代码。脚本由您在自己的服务器上安装和运行;我们从不登录您的服务器。请先在测试副本上试用,并把一份备份恢复到测试数据库中,确认它可用。

服务内容

  • 您将获得一个 ZIP 压缩包,内含脚本、附分步说明的 README,从标准版起还包含写有数据库、文件夹和副本保留数量的设置文件;订单页面上也能查看代码。
  • 标准工具mysqldump 或 pg_dump,无需安装冷门软件
  • 按您的规则轮换旧副本只按您的设定删除
  • 密码不写进代码写在您服务器上的 .my.cnf 或 .pgpass 中
  • 及时发现失败从标准版起,失败或为空的导出会记入日志,且不算作一份副本
  • 代码易读附有注释,以后添加数据库很方便

服务流程

  1. 1
    任务您描述服务器、数据库以及副本保留数量
  2. 2
    代码我们编写脚本和安装说明
  3. 3
    试用您在测试副本上运行,并把一份备份恢复到测试数据库
  4. 4
    修改您在套餐范围内提出修改,如有报错信息请一并发来

需要您提供的信息

数据库(MySQL、MariaDB 或 PostgreSQL)及其版本,服务器的系统(例如 Ubuntu 22.04)以及您能否在上面安装软件包,数据库有多大,副本存放在哪里、有多少空间。您的轮换规则:保留多少份每日、每周和每月副本。高级版还需提供副本的第二存放位置和接收失败通知邮件的地址。切勿发送密码或服务器访问权限。

我们会询问您:

  • 哪种数据库,有多大?
  • 它在什么服务器上?
  • 保留多少份副本?
  • 副本存放在哪里?
  • Bash 还是 Python?

套餐对比

套餐基础版一个数据库US$16标准版带设置的备份US$33高级版备份工具US$67
交付期限1 天2 天3 天
修改次数123
代码最多 150 行最多 400 行最多 1,000 行
代码文件数1最多 3 个最多 8
设置文件否是是
清晰的报错信息和日志否是是
运行选项及定时运行说明否否是
安装和运行说明(README)是是是
语言Bash 或 PythonBash 或 PythonBash 或 Python
下单 基础版下单 标准版下单 高级版

付款保障

您在下单时付款,但款项仅在您验收后才会结算。

  • 固定价格付款后套餐价格不会变动。
  • 款项先冻结付款时,这笔金额只是被冻结。您验收后,款项才会结算给平台。
  • 交付前检查每份成果在送达您之前都会经过质量检查,验收前您可以在订单页面查看。
  • 免费修改在需求说明范围内,您可以在套餐允许的次数内提出修改。
  • 3 天后自动验收如果交付后 3 天内您既未验收也未提出修改,工作将自动验收。如果您在交付后于订单聊天中留言,订单将暂停自动验收;我们回复后,可能会重新开始计算 3 天,并会在聊天中告知您。
  • 返工或全额退款如果成果与您的需求说明不符且修改后仍未解决,或工作耗时超过交付期限的两倍,请在订单聊天中留言:我们将为您返工或全额退款。
运作方式 →

问题与解答

会删除旧备份吗?

只按您给出的规则删除,例如保留 7 份每日和 4 份每周副本,而且只在它写入的备份文件夹中删除。在您设定规则之前,它会保留所有副本。

能把副本存到服务器之外吗?

高级版会把每份备份复制到第二块磁盘或您已有的存储中,使用该存储自己的命令行工具和您自己的密钥,密钥由您自己填进设置。

运行时会锁住网站吗?

对于 MySQL 中的 InnoDB 表和 PostgreSQL,导出时无需停止网站。非常大的数据库仍可能拖慢网站,所以请在访问量少的时段运行。

你们会在我的服务器上设置好吗?

不会。我们从不登录您的服务器。README 会说明每一步,从复制脚本到把它加入 cron(高级版)。

没有找到答案?

套餐