找回密码
 立即注册
搜索
查看: 132|回复: 4

极速调度,可靠备份 OpsDump v0.2.0 桌面版发布

[复制链接]

主题

0

回帖

0

积分

积分
0
发表于 2026-10-8 16:00:41 | 显示全部楼层 |阅读模式
OpsDump v0.2.0 发布,新增 Windows 桌面版(Electron)。
新增

•
Windows 桌面客户端,双击即用、离线可用,无需浏览器或命令行

•
运行数据存放在用户目录,首次启动自动初始化,与安装目录隔离

•
服务仅本机可访问,端口被占用时自动切换

•
退出应用时后端优雅关闭,进程无残留



--------------------------------



极速调度,可靠备份(The Swift Engine for Ops & Dump)

OpsDump 是一个面向数据库备份为主、兼有通用任务调度能力的单进程运维平台。基于 GoFrame v2 构建,单二进制、SQLite 落库、Web 页面管理,开机即用

仓库地址


• GitHub:https://github.com/LeapSunrise26/OpsDump
• Gitee:https://gitee.com/LeapSunrise/OpsDump

特性

•
数据库备份模板:内置 MySQL / TDengine / MinIO(S3) 备份模板,默认禁用,页面启用后按 cron 自动运行。

•
通用任务调度:任意本机命令均可作为任务(kind=shell),支持 ${VAR} 引用 .env,支持 ssh 跨机执行。

•
执行 + 检测双状态:主命令执行后可选跑一条校验命令,独立记录结果,兜住"假成功"。

•
流水线编排:通过 depends_on 串联 backup → verify → sync → cleanup,杜绝"先删后传丢档"。

•
磁盘预检 / 体积上报:执行前检查输出盘剩余空间,执行后统计产物体积写入历史。

•
Web 管理页面:gview + Vue3(CDN) 内嵌后台,登录后配置任务、查看执行历史,无需 SSH。

•
任务导出导入:支持任务配置的批量导出/导入,方便迁移和备份。

•
认证与会话:账号密码登录,初始 admin 账号由 .env 的 ADMIN_PASSWORD 注入。

•
结构化日志 + 飞书告警:JSON 行日志,飞书 webhook 通知。

•
探活接口:GET /ping → pong、GET /healthz。


快速开始
1. 准备环境变量

编辑 .env 并根据实际情况修改:

  1. # 管理员密码(启动前必须修改!)
  2. ADMIN_PASSWORD=your_password!

  3. # 备份存储路径
  4. BACKUP_DIR=/opt/backups

  5. # MySQL 配置
  6. MYSQL_ROOT_PASSWORD=
  7. MYSQL_HOST=127.0.0.1
  8. MYSQL_PORT=3306
  9. MYSQL_DATABASE=your_database

  10. # TDengine 配置
  11. TDENGINE_ROOT_PASSWORD=
  12. TDENGINE_HOST=127.0.0.1
  13. TDENGINE_PORT=6030
  14. TDENGINE_DATABASE=your_database

  15. # MinIO 配置
  16. MINIO_ROOT_USER=
  17. MINIO_ROOT_PASSWORD=
  18. MINIO_ENDPOINT=127.0.0.1:9000
  19. MINIO_BUCKET=your_bucket
复制代码
注意:敏感信息(密码/密钥)仅在此文件中配置,不会进入代码或日志。
2. 配置

编辑 manifest/config/config.yaml(或自建 config.yaml 通过 --config 指定):

  1. ops-dump:
  2.   timezone: "Asia/Shanghai"
  3.   dbPath: "./ops-dump.db"
  4.   credentials:
  5.     envFile: ".env"
  6.   admin:
  7.     username: admin
  8. logger:
  9.   path: ./logs
  10.   file: opsdump.log
  11.   level: info
  12.   stdout: true
复制代码
3. 运行

  1. # 开发运行
  2. go run main.go

  3. # 或交叉编译后运行(sqlite 为纯 Go,无 CGO,可静态编译)
  4. GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o ops-dump .
  5. ./ops-dump
复制代码

启动后访问 http://<host>:28090,用 admin 登录,进入任务管理启用/新建任务。
注意:首次启动请确保 ops-dump.db 不存在,让程序自动创建(Windows 开发机下 gf sqlite 对相对路径解析有特殊处理,生产 Linux 无此问题)。
目录结构

  1. ops-dump/
  2. ├── main.go                     # 入口:调用 internal/cmd 启动并阻塞
  3. ├── api/                        # 对外接口 Req/Res 数据结构
  4. ├── hack/                       # gfcli 配置与代码生成辅助(gen-db)
  5. ├── internal/
  6. │   ├── cmd/                    # 启动引导:配置/日志/DB/调度初始化、注册路由
  7. │   ├── consts/                 # 常量(表名、任务类型、状态等)
  8. │   ├── controller/             # 接口与页面路由实现
  9. │   ├── dao/                    # 数据访问层(gf gen dao 生成)
  10. │   ├── model/                  # entity / do / 公共结构
  11. │   └── service/                # 业务层:env/execute/db/auth/job/tpl/runner/scheduler/notify
  12. ├── manifest/
  13. │   ├── config/config.yaml      # 进程配置
  14. │   └── sql/ops-dump.sql        # 建表 DDL(gf gen dao 的 schema 源)
  15. ├── resource/                   # 模板(template/) 与静态资源(public/),随二进制内嵌
  16. └── go.mod / go.sum
复制代码
数据模型

全部表以 od_ 前缀开头,运行时自动建表迁移:



表

说明



od_users

账号(密码 sha256(salt+pwd) 哈希)



od_sessions

会话(预留,当前使用 gf 内存会话)



od_jobs

任务定义(kind/cron/command/verify_command/run_after/retention 等)



od_job_runs

执行历史(执行+检测双状态、输出、体积、耗时、错误)



od_notify_config

通知配置(飞书 webhook)


主要接口



接口

说明



GET /ping

探活,返回 pong



GET /healthz

健康检查,返回 JSON



GET /login

登录页(公开)



/、/dashboard、/jobs、/runs

管理页面(需登录)



POST /api/login / POST /api/logout / GET /api/current-user

认证



GET/POST /api/jobs、GET/PUT/DELETE /api/jobs/:id

任务 CRUD



POST /api/jobs/:id/enable、disable、run、GET /api/jobs/:id/runs

任务操作


部署

  1. nohup ./ops-dump > /dev/null 2>&1 &
复制代码
桌面版(Electron)

Windows 桌面版把后端作为 sidecar 子进程托管,双击即用、数据与安装目录隔离, 设计详见 docs/opsdump-electron-design.md。

  1. # 构建 sidecar(gf pack 内嵌 resource + 交叉编译 windows/amd64,需本机 gf CLI)
  2. make build-windows

  3. # 开发运行(自动 spawn dist/sidecar/ops-dump.exe,pnpm 或 npm 均可)
  4. cd desktop && pnpm install && pnpm start

  5. # 开发时连本机已跑的 go run 实例(不 spawn)
  6. set SIDECAR_EXTERNAL=1&& pnpm start

  7. # 打包 NSIS 安装包(先构建 sidecar,产物在 dist/)
  8. pnpm run dist
复制代码
注意事项

•
敏感信息一律 ${VAR} 引用 .env,明文不出库不落地;.env 权限 600。

•
httpAddr 建议绑定内网;通用 shell 任务拥有执行权限,需审计。

•
备份产物应与源数据不在同一磁盘;清理任务须排在同步任务之后。


​
截图

概览




任务管理




执行历史



原文链接

打赏作者

当前余额:0 Token,打赏后立即到账

主题

0

回帖

0

积分

积分
0
发表于 2026-10-8 16:15:01 | 显示全部楼层
有一说一,现在肯把v0.2.0讲这么细的人不多了。

主题

0

回帖

0

积分

积分
0
发表于 2026-10-8 16:45:01 | 显示全部楼层
支持原创,内容很扎实,持续关注。

主题

0

回帖

0

积分

积分
0
发表于 2026-10-8 17:15:01 | 显示全部楼层
感谢分享!OpsDump正好是手头项目要用的,太及时了。

主题

0

回帖

0

积分

积分
0
发表于 2026-10-8 17:45:01 | 显示全部楼层
这篇干货浓度很高,v0.2.0和OpsDump两个点都讲到位了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

{ template common/footer}