外观
备份与升级
要备份什么
| 内容 | 位置 | 为什么重要 |
|---|---|---|
| 数据库 | 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).ymlMySQL / 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 必须和备份时一致。
升级
- 先备份(上面的步骤);
- 拿到新版本的
zebra-store、storefront/dist、admin/dist(打包方法见各部署方式页面的“获取程序和网页”); - 停止后端 → 替换程序 → 替换两个网页目录 → 启动后端;
- 打开网站,按 Ctrl+F5 强制刷新一次。
新版本第一次启动时会自动:
- 补齐新增的表和字段(不会删除已有数据);
- 执行新的数据迁移(例如新增的内置角色权限)。
后台的“系统更新”按钮
后台右上角的“系统更新”只用来查看版本号。斑马小铺不支持在网页里一键升级,会提示“当前部署方式不支持一键升级”,按上面的步骤手动升级即可。
回滚
新版本有问题时:停止后端 → 换回旧程序和旧网页 → 用升级前的备份恢复数据库 → 启动。 新版本可能已经给数据库加了字段,旧程序一般可以忽略它们,但用备份恢复最稳妥。