1. 项目概述:当树莓派遇上网页化磁盘管理
去年给工作室搭建NAS系统时,我发现自己频繁需要SSH登录树莓派查看磁盘状态。这种操作对技术人员不算麻烦,但当需要让设计同事自主查看素材盘剩余空间时,就暴露了命令行交互的门槛问题。于是诞生了这个将df -h命令网页化的工具——通过浏览器即可直观查看树莓派挂载的所有磁盘信息,包括挂载点、总容量、已用空间、可用空间和使用百分比。
这个方案的核心价值在于:
- 零客户端依赖:任何设备只要有浏览器就能访问
- 实时数据展示:自动刷新磁盘状态(默认30秒间隔)
- 极简部署:单Python文件实现,依赖仅Flask+psutil
- 安全控制:支持IP白名单和基础认证双重防护
实测在树莓派4B上运行,内存占用不足20MB,CPU利用率低于2%,完全不影响主机正常服务。下面分享从原型开发到生产部署的全过程。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与架构设计
2.1 为什么选择Flask+psutil组合?
在轻量级Web框架中,Flask相比Django更适合资源受限的树莓派环境。测试数据显示:
- Flask冷启动内存占用约8MB,Django则需要45MB+
- 路由声明式编程更符合微型项目需求
- Jinja2模板引擎足够应对简单页面渲染
psutil则是跨平台系统监控的瑞士军刀,其优势在于:
- 统一接口获取磁盘信息(Windows/Linux/macOS通用)
- 直接返回字节单位数据,省去
df命令文本解析 - 提供磁盘挂载点自动发现能力
python复制# 典型磁盘信息获取代码
import psutil
partitions = psutil.disk_partitions()
for part in partitions:
usage = psutil.disk_usage(part.mountpoint)
print(f"{part.device} -> {part.mountpoint} {usage.percent}%")
2.2 前端方案取舍
考虑到树莓派的性能限制,前端采用最简方案:
- 纯HTML+CSS(无jQuery/Vue等库)
- 表格布局展示磁盘信息
- 自动刷新通过meta refresh实现(替代WebSocket)
- 响应式设计适
