Skip to content

cuilan/disk-pulse

Repository files navigation

disk-pulse

disk-pulse 是一个本机优先的磁盘扫描与文件检索工具。当前版本已实现单机 MVP:零配置启动、WebUI、SQLite 存储、本机主机/磁盘发现、目录扫描、搜索、详情和手动标签。

已实现

  • 单机 standalone 模式,默认监听 0.0.0.0:8080,允许使用本机 IP 访问。
  • 首次启动自动在 ~/.config/disk-pulse/app.yaml 写入带英文注释的配置模板。
  • 启动时轻量发现本机主机和磁盘/盘符,写入 hostsdisks 表。
  • SQLite 使用纯 Go 驱动 modernc.org/sqlite,不依赖 CGO。
  • React + TypeScript + Vite WebUI,源码位于 web/,构建产物输出到 internal/server/static/ 并由 Go embed 打包。
  • WebUI 左侧展示主机树,展开后显示磁盘;点击磁盘可过滤搜索并查看容量/可用/使用率信息。
  • 搜索语法 MVP:普通关键词、tag:标签host:主机disk:磁盘

运行

go run ./cmd/disk-pulse

打开:

http://127.0.0.1:8080

局域网内访问时使用运行机器的实际 IP,例如:

http://<server-ip>:8080

如果无法访问,请确认系统防火墙或云服务器安全组已放行 8080 端口。

默认配置和数据库位置:

~/.config/disk-pulse/app.yaml
~/.config/disk-pulse/disk-pulse.db

使用仓库内开发配置:

go run ./cmd/disk-pulse --config-dir ./configs --mode standalone

常用启动参数:

go run ./cmd/disk-pulse --help
go run ./cmd/disk-pulse --version
go run ./cmd/disk-pulse --mode standalone
go run ./cmd/disk-pulse --mode master
go run ./cmd/disk-pulse --mode agent

前端开发

安装依赖:

npm --prefix web install

启动 Vite 开发服务器:

npm --prefix web run dev

Vite 会把 /api 代理到 http://127.0.0.1:8080,所以开发 WebUI 时通常同时启动 Go 后端:

go run ./cmd/disk-pulse --config-dir ./configs

构建前端产物到 Go embed 目录:

npm --prefix web run build

Makefile 目标:

make web-install
make web-dev
make web-build
make build

配置

用户通常不需要先理解完整配置文件。程序会在首次启动时将带英文注释的配置模板写入用户家目录下的 .config/disk-pulse/app.yaml;后续只在需要改端口、Master 地址或数据库路径时编辑它。扫描跳过规则等运行期配置保存在数据库配置表中,可在 WebUI 系统设置里调整。

主要配置项:

  • app.mode:启动模式,支持 standalonemasteragent;启动参数 --mode 优先级高于配置文件,未指定时默认使用 standalone
  • app.master_addr:agent 模式连接 master 的地址,例如 10.121.1.116:8080
  • server.addr:HTTP API 和 WebUI 监听地址,默认 0.0.0.0:8080
  • database.dsn:SQLite 数据库路径。

注意:agent 模式不允许配置 server 段,启动时也不会启动 WebUI/API server。当前 agent 只作为扫描上报进程设计,启动时不会初始化本地 SQLite 数据库。

API 概览

  • GET /api/health
  • GET /api/hosts
  • GET /api/stats
  • GET /api/disks
  • GET /api/files?q=tag:代码&limit=100
  • GET /api/files/{id}
  • POST /api/files/{id}/tags
  • GET /api/scans
  • POST /api/scans
  • GET /api/scans/{id}
  • POST /api/scans/{id}/cancel

SQLite 与交叉编译

当前使用 modernc.org/sqlite,不需要 CGO。相比 github.com/mattn/go-sqlite3,它更适合跨平台单二进制发布,因为交叉编译时不需要额外准备目标平台的 C 编译器和 SQLite C 依赖。

开发验证

$env:GOCACHE = Join-Path (Get-Location) '.gocache'
go test ./...

也建议验证无 CGO 路径:

$env:CGO_ENABLED = '0'
go test ./...

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors