一台 Windows 电脑,一部 Android 手机,在家里的网络中备份照片、视频和文件。支持断点续传、完整性校验、网页浏览和图集整理,源码与完整部署包均已公开。
手机里的照片和视频,总是在不知不觉中越积越多。
孩子成长的录像、家人聚会的合影、旅行时随手拍下的风景,还有平时保存的文档和录音。拍的时候很方便,到了换手机、整理空间时,才发现把这些资料妥善存下来,也需要花些心思。
我想做一个自己用起来顺手的小工具:手机连接家里的网络,就能把需要保留的文件备份到自己的电脑,并且方便查看和整理。
于是就有了 lw.HomeNAS。
现在,这个项目已经开源,完整部署包也已通过自动构建流程发布到 GitHub Releases。普通用户可以下载体验,感兴趣的开发者也可以直接看源码。
一台电脑,加一部手机
lw.HomeNAS 当前主要面向 Windows 10/11 x64 电脑 + Android 手机 的家庭局域网使用场景。
电脑负责保存文件、管理账号和提供网页;手机负责选择照片、视频及其他文件,执行备份任务。电脑浏览器也能直接上传文件、查看资料库。
你可以把它用在日常家庭备份,也可以拿来整理个人照片、学习资料、工作文档和录音。备份过程由手机与自己的电脑直接传输,无需接入第三方云存储。
不需要自己搭建 Python 环境,也不需要安装 Android 开发工具。下载完整部署包和 APK,就可以开始体验。
备份之前,先知道自己选了什么
手机端可以按日期浏览照片和视频,逐项选择,也可以按天选择。界面会显示已备份、待备份、已入队、待核实等状态,帮助你判断哪些资料还需要处理。
例如,周末带家人出去玩,拍了一批照片。回到家后,打开软件,选择当天需要保留的内容,加入备份队列即可。
除了照片和视频,也可以通过"选择其他文件",手动加入文档、录音等资料。

手机按日期选择照片和视频
手机界面预览,使用演示图片和状态数据。
完成相册授权后,还可以选择需要扫描的相册,配置网络、充电等条件,开启定时备份。Android 的后台调度会受到省电策略和厂商限制影响,实际执行时机以手机系统为准;如果只授予了部分照片权限,软件也只会处理授权范围内的内容。
上传中断了,可以接着传
备份视频时,传到一半断网,往往比等待本身更让人头疼。
所以,这个项目把 分块上传、任务持久化和断点续传 放在了比较核心的位置。
手机会保存备份队列,电脑会记录已经确认接收的位置。任务中断后,可以重新打开应用、恢复连接,再继续处理未完成的内容。
传输结束后,服务器还要检查文件大小和完整 SHA256 摘要。只有服务器确认文件已经完成校验并入库,手机才会显示"已备份"。
对于相同内容的文件,服务器可以复用已有原件;同名但内容不同的文件,也会分别保留。
界面提供当前文件进度、传输阶段、上传速度、暂停和重试入口。实际速度取决于电脑磁盘、手机性能和局域网环境。
存下来之后,还要方便找
照片备份到电脑,下一步自然是浏览和整理。
现在,Web 和 APK 的资料库都提供 "时间线 / 图集" 两种展示方式。
时间线按文件时间分组,适合顺着日期翻看;当前采用文件修改时间,缺少有效时间时再回退到入库时间。
图集则适合按主题整理,比如:
- 家人的生日与聚会。
- 一次旅行的照片和录像。
- 孩子的绘画、作品与成长记录。
- 项目现场照片或活动资料。
你可以新建图集、填写说明、批量加入照片与视频,也可以设置封面、移出成员或删除图集。照片多时,列表会分页加载。

电脑网页中的图集详情
Web 图集功能截图,使用合成示例图片。
这里有一个我比较在意的设计:图集保存的是文件的关联关系。
同一张照片可以出现在多个图集中,不需要因此再复制几份文件。把照片移出图集,或者删除整个图集,服务器上已保存的原件仍然保留,也仍然可以在时间线中找到。
预览、下载,也照顾到了
资料库支持照片预览、视频封面和原件下载。
Web 图片详情里,可以查看文件名、大小、尺寸、文件时间,以及原图中能够读取的 EXIF 拍摄信息;缺失的字段会标明未提供。

网页中的图片与拍摄信息
元数据功能截图,使用专门生成的测试图片和示例拍摄参数。
视频封面通过随包提供的 FFmpeg 提取,方便先认出文件内容。视频能否直接播放,仍取决于浏览器、手机及其支持的编码;封面生成并不等于完成了视频转码。
手机端也可以将资料库中的原件保存到自己选择的位置。
几步就能开始使用
1. 下载完整部署包
打开项目的 GitHub Releases 页面(github.com/lxw112190/l...
写这篇文章时,公开版本为 ci-15 预发布版(github.com/lxw112190/l... / code10`。页面同时提供独立 APK 和 SHA256 校验文件,后续版本以 Releases 页面为准。
2. 在电脑上启动
把完整 ZIP 解压到一个可写目录,保留目录结构。
首次部署先运行:
bash
deploy/import_android.bat
它会把随包 APK 导入到网页下载入口。然后运行程序目录里的:
启动服务.cmd
在电脑浏览器中打开:
arduino
http://127.0.0.1:8787/
完整部署包首次创建的管理员账号是 admin,初始密码是 admin123。登录后请先修改密码。
3. 手机连接自己的电脑
手机与电脑连接到可互访的家庭局域网,在网页登录页下载 APK 并安装,也可以使用 Releases 中的独立 APK。
在手机连接设置中,填写电脑实际的局域网地址。例如,电脑 IP 是 192.168.1.20,则填写:
| 设置项 | 示例 |
|---|---|
| 协议 | HTTP |
| 电脑地址 | 192.168.1.20 |
| 端口 | 8787 |
先测试连接,再用账号和密码登录。如果电脑端口受到防火墙限制,部署目录中也提供了相应的防火墙操作脚本。
默认 HTTP 连接适合在受信任的家庭内网体验,传输本身不加密;项目同时保留 HTTPS 支持。对外访问需要另外配置 HTTPS 和访问控制。
4. 先完成一小批备份
先选择几张照片和一个视频,完成上传、预览和下载,确认保存位置与内容符合预期,再处理大批文件。
电脑需要保持开机、服务运行,手机才能继续上传。也可以使用 deploy 目录下的脚本安装为 Windows 服务,让电脑启动后自动运行。
当前版本处于预发布阶段。重要资料建议再保留一份到另一块硬盘;升级软件时保留原有的 config 和 data 目录。
给开发者:这个项目里有哪些值得研究的地方
后台使用 C++17 + cpp-httplib 提供 HTTP 接口,使用 SQLite 保存账号、文件目录、上传任务和图集关联,电脑端通过 Web 页面管理。
Android 界面使用 HTML、CSS 和 JavaScript,相册读取、文件传输、本机任务队列和后台调度则放在 Java 原生层。
一次备份大致会经过下面这些步骤:
选择文件 → 加入本机队列 → 计算摘要 → 分块传输
→ 服务器校验大小和摘要 → 入库 → 显示已备份
大文件通过有界缓冲区流式传输,任务进度持久化到数据库。图片缩略图由 Windows WIC 处理,视频封面交给 FFmpeg;图集通过数据库关联复用原件。
账号提供管理员、普通用户和只读用户三种角色。当前资料库面向家庭共享,权限控制的是操作能力,暂不提供个人照片空间隔离。
项目也补上了自动发布流程:Android 构建和模拟器检查通过后,再构建 Windows 程序、验收完整 ZIP,最后把部署包、APK 和校验文件发布到 GitHub Releases。APK 沿用固定签名,后续按递增版本号维护。
如果你正在学习 C++ HTTP 服务、Android 原生与 Web 界面协作、SQLite 任务队列,或者断点续传和完整性校验,这个项目可以作为一个具体的实践案例。
下载与交流
lw.HomeNAS 想做的事情很朴素:让手机里的重要文件,在自己的电脑上多留一份,并且方便浏览和整理。
源码、构建脚本、使用说明和部署包都已经公开。欢迎下载体验,也欢迎通过 Issue 提交问题,或者一起完善功能。
项目源码: github.com/lxw112190/lw.HomeNAS(github.com/lxw112190/l...
部署包下载: GitHub Releases(github.com/lxw112190/l...
交流QQ群:天天代码码天天(264292622)
如果这个小工具对你有帮助,欢迎点个 Star,也欢迎分享给同样需要整理和备份资料的朋友。