feat(data): 命令行导入导出通道 + 修上传解析的句柄泄漏

- scripts/data-transfer.js:tables / export / import --preview|--apply,与网页版共用同一套内核。
  用于 nginx/CDN 挡住 1.22MB 上传时的备用通道,也可挂 cron 做异地备份。
- readBundle:校验失败中途抛错时关闭 readStream 与 readline,避免反复上传坏包耗尽文件句柄。
- docs:补命令行用法与体积限制说明。
This commit is contained in:
Drsakura
2026-10-23 13:48:53 +08:00
parent 1a759ef37d
commit 1e7c3fdcc1
3 changed files with 203 additions and 1 deletions
+24
View File
@@ -94,6 +94,30 @@ sleep 3 && curl -s http://127.0.0.1:4300/api/health
反向也成立:云端 → 本地同样走这一页,包是同一个格式。
## 命令行(备用通道)
浏览器上传被 nginx / CDN 的体积限制挡住(默认 `client_max_body_size 1m`,而真实包 1.22 MB 就会 413),
或者想把包 `scp` 上去直接在服务器导,用同仓库的 CLI:
```bash
cd /opt/1panel/www/sites/erp.foohere.de/index/backend
# 各类别、各表当前行数
/usr/bin/node scripts/data-transfer.js tables
# 先预览:在库副本上真跑一遍,线上库不动
/usr/bin/node scripts/data-transfer.js import /root/bundle.hdata.gz --preview
# 确认后导入:自动备份到 data/backups/,归属给 --user 指定的账号
/usr/bin/node scripts/data-transfer.js import /root/bundle.hdata.gz --apply --user admin
# 定期导出做异地备份(配合 cron)
/usr/bin/node scripts/data-transfer.js export --out /root/backup-$(date +%F).hdata.gz
```
与网页版**共用同一套代码**(判重、归属改写、补壳、备份完全一致),
`--categories catalog,orders` 可以只搬某几类。
## 接口
| 方法 | 路径 | 说明 |