Skip to content

备份与升级 ​

要备份什么 ​

内容位置为什么重要
数据库SQLite:data/zebra.db;或者 MySQL / PostgreSQL所有商品、卡密、订单、用户、余额
上传目录uploads/商品图、Logo、Banner
配置文件config.yml(以及环境变量文件)app.secret_key 丢了,数据库里加密的支付密钥、对接密钥就再也解不开

网页文件(storefront/、admin/)可以随时重新打包,不用备份。

SQLite 备份 ​

SQLite 正在写入时直接复制文件可能得到损坏的副本。用 sqlite3 的在线备份命令,不需要停服务:

bash
apt install -y sqlite3
mkdir -p /root/backup
sqlite3 /opt/zebra/data/zebra.db ".backup '/root/backup/zebra-$(date +%F).db'"
sqlite3 /root/backup/zebra-$(date +%F).db "PRAGMA integrity_check;"     # 输出 ok 表示备份完好
tar czf /root/backup/uploads-$(date +%F).tgz -C /opt/zebra uploads
cp /opt/zebra/config.yml /root/backup/config-$(date +%F).yml

MySQL / PostgreSQL 备份 ​

bash
mysqldump --single-transaction -u zebra -p zebra > /root/backup/zebra-$(date +%F).sql
pg_dump -U zebra -h 127.0.0.1 zebra > /root/backup/zebra-$(date +%F).sql

每天自动备份 ​

把下面的脚本保存为 /root/zebra-backup.sh,按你的实际路径修改:

bash
#!/bin/sh
set -e
D=/root/backup; mkdir -p "$D"; T=$(date +%F)
sqlite3 /opt/zebra/data/zebra.db ".backup '$D/zebra-$T.db'"
tar czf "$D/uploads-$T.tgz" -C /opt/zebra uploads
cp /opt/zebra/config.yml "$D/config-$T.yml"
find "$D" -type f -mtime +14 -delete        # 只保留 14 天
bash
chmod +x /root/zebra-backup.sh
(crontab -l 2>/dev/null; echo "30 4 * * * /root/zebra-backup.sh") | crontab -

异地备份

备份和网站放在同一台服务器上,服务器坏了就一起没了。至少每周把 /root/backup 下载一份到别处, 或者用 rclone 同步到对象存储。

宝塔用户可以直接用 计划任务 → 备份目录 / 备份数据库,见 宝塔面板部署。

恢复 ​

bash
systemctl stop zebra-store
cp /root/backup/zebra-2026-01-01.db /opt/zebra/data/zebra.db
rm -f /opt/zebra/data/zebra.db-wal /opt/zebra/data/zebra.db-shm
rm -rf /opt/zebra/uploads && tar xzf /root/backup/uploads-2026-01-01.tgz -C /opt/zebra
chown -R zebra:zebra /opt/zebra
systemctl start zebra-store

恢复时 config.yml 里的 app.secret_key 必须和备份时一致。

升级 ​

  1. 先备份(上面的步骤);
  2. 拿到新版本的 zebra-store、storefront/dist、admin/dist(打包方法见各部署方式页面的“获取程序和网页”);
  3. 停止后端 → 替换程序 → 替换两个网页目录 → 启动后端;
  4. 打开网站,按 Ctrl+F5 强制刷新一次。

新版本第一次启动时会自动:

  • 补齐新增的表和字段(不会删除已有数据);
  • 执行新的数据迁移(例如新增的内置角色权限)。

后台的“系统更新”按钮

后台右上角的“系统更新”只用来查看版本号。斑马小铺不支持在网页里一键升级,会提示“当前部署方式不支持一键升级”,按上面的步骤手动升级即可。

回滚 ​

新版本有问题时:停止后端 → 换回旧程序和旧网页 → 用升级前的备份恢复数据库 → 启动。 新版本可能已经给数据库加了字段,旧程序一般可以忽略它们,但用备份恢复最稳妥。

斑马小铺 Zebra Store:dujiao-next 的 Rust + Vue 3 复刻版