资讯动态

Databasus备份解密脚本使用说明

发布时间:2026/10/27 5:03:24 来源:尧图企业网站定制
Databasus(Mysql或MariaDB)备份解密脚本使用说明一、脚本功能脚本下载链接: https://pan.baidu.com/s/1daBXThAelmtQ7YcrLGdz4g?pwdfdds 提取码: fddsdecrypt_backup.py用于解密 Databasus 生成的加密备份文件并自动用zstd解压最终得到可直接还原的.sql文件。处理流程加密备份文件 metadata master key │ ├─ 校验文件头 (PGRSUS01) ├─ 用 PBKDF2 派生密钥 (master_key backupId, salt, 100000 次迭代) ├─ 按 1MB 分块用 AES-GCM 解密 ├─ 输出 decrypted_备份名.zst └─ zstd 解压 → decrypted_备份名.sql(并删除中间 .zst)注脚本中master_key已改为从环境变量读取不再硬编码在源码里。二、前置条件1. Python 版本Python 3.7 及以上。2. 安装 Python 依赖pip install pycryptodome(只用到Crypto模块包名是pycryptodome不是pycrypto。)3. 安装 zstd 命令行工具脚本会调用系统zstd命令需确保它在PATH中# Debian / Ubuntu sudo apt-get install zstd # RHEL / CentOS / Rocky sudo yum install zstd # 或 sudo dnf install zstd # macOS brew install zstd # Windows(推荐用 choco 或 scoop) choco install zstd # 或 scoop install zstd验证zstd --version4. 需要的三个输入输入说明加密备份文件例如mysql-...-d12ae790-...(没有扩展名也可能)metadata 文件与备份同名的.metadata文件(JSON)含backupId、encryptionSalt、encryptionIV等master key来自./databasus-data/secret.key通过环境变量传入三、设置环境变量环境变量名DATABASUS_MASTER_KEYLinux / macOSexport DATABASUS_MASTER_KEY你的主密钥内容Windows PowerShell$env:DATABASUS_MASTER_KEY 你的主密钥内容Windows CMDset DATABASUS_MASTER_KEY你的主密钥内容⚠️ 提示直接export会把密钥写进 shell 历史生产环境建议改用read -s交互输入或使用密钥管理系统(Vault、KMS 等)。切勿把密钥写进脚本、配置文件或提交到 Git。如果密钥中含空格/特殊字符务必用引号包起来。四、运行export DATABASUS_MASTER_KEY你的主密钥 python decrypt_backup.py ./xxx ./xxx.metadata成功输出示例Successfully decrypted 37 chunks to ./decrypted_mysql-...-d12ae790-....zst *** zstd command line interface 64-bits v1.5.5, by Yann Collet *** ./decrypted_mysql-...-d12ae790-....zst : 16777216 bytes最终得到./decrypted_mysql-...-d12ae790-....sql中间产物decrypted_*.zst会在解压成功后自动删除。五、常见错误与排查报错原因解决Error: environment variable DATABASUS_MASTER_KEY is not set没设置或拼错环境变量名检查echo $DATABASUS_MASTER_KEY(Windowsecho $env:DATABASUS_MASTER_KEY)Error: Backup file not found备份文件路径不对检查相对/绝对路径注意文件名很长、没有扩展名Error: Metadata file not foundmetadata 路径不对确认.metadata文件与备份同目录Error: Backup is not encrypted (encryption status: ...)metadata 中encryption不为ENCRYPTED说明此备份未加密直接zstd -d解压即可无需本脚本Invalid magic bytes: expected bPGRSUS01, got ...传入了错误的文件(如已经解压过或不是 Databasus 加密备份)确认输入的是原始加密备份MAC check failed(会打印 Failed at chunk N)①master key 错误②备份损坏③metadata 与备份不匹配逐一核对密钥、备份完整性、metadata 是否配套不要混用不同备份的 metadatasubprocess.CalledProcessError: ... zstd .../FileNotFoundError: zstd未安装 zstd 或不在 PATH按第二节安装并验证ModuleNotFoundError: No module named Crypto未安装依赖pip install pycryptodome发生MAC check failed时脚本会自动删除已生成的不完整decrypted_*.zst不会污染目录。六、安全建议密钥只经环境变量传递不要硬编码、不要写进脚本、不要提交仓库。metadata 与备份必须配套不同备份的backupId/salt/IV 不同混用必然 MAC 校验失败。解密得到的是明文 SQL包含业务数据请保存在受限目录并控制权限(如chmod 600)用完后及时清理。在生产机执行前建议先在测试环境用一份小备份验证流程。记录并保管好secret.key原文件这是唯一的解密凭证——丢失后无法恢复。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑