1. 项目缘起从本地存储到云端备份的刚需作为一名折腾过好几款家用摄像头的用户我最初的想法很简单买台小米智能摄像机看家护院、逗逗宠物视频就存在自带的SD卡里需要的时候再翻看。这个模式在初期确实够用但很快就暴露了几个让我头疼的问题。首先是存储容量和寿命。一张32G或64G的TF卡在1080P高清录制下没几天就满了需要手动清理或者设置循环覆盖。频繁的读写对TF卡的寿命是个考验我已经用坏过两张卡了数据丢失的风险始终悬在心头。其次是数据的安全性。设备本身是物理存在的万一遇到入室盗窃小偷很可能连摄像机一起端走那存储卡里的录像也就没了。最后是查看的便利性。虽然可以通过米家App远程回看但如果我想把某段有趣的宠物视频或者重要的监控片段长期保存下来或者分享给家人就需要先下载到手机再上传到其他平台步骤繁琐。于是一个更自动化的方案需求就浮出水面能不能让摄像机录制的视频自动、实时地同步到我信得过的云端网盘里比如百度网盘、阿里云盘或者我自己的NAS这样既解决了本地存储的容量和风险问题也实现了数据的异地容灾和便捷访问。我查遍了米家App和摄像机的官方功能发现它原生只支持存储到SD卡或小米自带的云服务需要额外付费并没有提供直接同步到第三方网盘的选项。但这难不倒爱折腾的人。经过一番研究和实践我发现通过一些“曲线救国”的方法完全可以实现这个目标。核心思路是让摄像机将视频文件写入一个能被外部程序访问的网络存储位置如SMB共享文件夹然后由这个外部程序负责将文件同步到各大网盘。下面我就把这个从零搭建的完整方案包括原理、工具选型、详细步骤和踩过的坑分享给大家。2. 方案核心架构与原理拆解要实现小米摄像机视频自动同步到网盘我们不能直接修改摄像机固件因为它是一个封闭系统。所以我们必须构建一个“中间层”服务。整个方案的架构可以清晰地分为三个部分视频生产端、网络中继站和云端同步端。2.1 视频生产端小米智能摄像机这是数据的源头。几乎所有支持SD卡存储的小米/米家智能摄像机其录像文件都会以特定的命名规则通常包含时间戳和通道信息存储在SD卡的固定目录下。我们的目标不是去直接读取SD卡物理上不可行而是利用摄像机另一个重要功能NAS网络存储。许多较新型号的小米摄像机如云台版2K、Pro等在存储设置中除了“SD卡”还有一个“NAS”选项。启用这个功能后摄像机会将录制的视频文件通过SMBServer Message Block协议写入到同一个局域网内指定的一台电脑或NAS设备的共享文件夹中。SMB协议正是我们整个方案的基石它使得摄像机能够像访问本地磁盘一样向网络上的其他设备写入文件。2.2 网络中继站常开机的电脑或NAS这是整个系统的“心脏”需要7x24小时运行。它承担两个核心任务提供SMB共享文件夹接收来自摄像机写入的视频文件。运行同步程序监控这个共享文件夹一旦有新的视频文件产生就立即将其上传到指定的网盘。为什么需要这个中继站因为摄像机计算能力有限无法运行复杂的同步客户端而网盘API的调用、令牌管理、断点续传等功能都需要一个更强大的环境来执行。一台闲置的旧电脑、树莓派或者专业的NAS设备如群晖、威联通、极空间都是绝佳的选择。我本人使用的是常年开机的Windows台式机因为它软件兼容性好调试方便。2.3 云端同步端各类网盘这是数据的最终目的地。我们需要选择支持开放API或提供同步客户端的网盘服务。根据我的测试和社区反馈主要有以下几类选择百度网盘用户基数大提供官方API但非会员上传下载速度受限。适合对速度不敏感主要用于冷备份的场景。阿里云盘目前上传不限速体验较好通过官方开放的API可以方便地上传文件是当前的热门选择。一刻相册本质是百度网盘的相册版有时会有免费空间活动但API可能不如百度网盘通用。WebDAV/对象存储一些NAS系统或同步工具支持将文件同步到支持WebDAV协议的网盘如坚果云或者直接到云服务商的对象存储如阿里云OSS、腾讯云COS这类方案更灵活但配置稍复杂。SMB协议的其他终端严格来说这不算“云”盘。你可以让中继站将文件再通过SMB协议同步到局域网内另一台存储空间更大的NAS或电脑上实现本地异地备份。我们的方案将聚焦于最主流的百度网盘和阿里云盘通过它们的开放接口实现自动化上传。3. 环境准备与SMB共享设置万事开头难第一步是搭建好网络中继站并让摄像机成功将视频写入进来。3.1 硬件与基础环境准备你需要准备一台常开机的设备Windows电脑、Linux电脑或NAS。确保其IP地址在局域网内最好是固定的可通过路由器绑定DHCP静态IP。小米智能摄像机确认你的型号支持“NAS存储”功能。通常在米家App中进入摄像机设置 - 存储设置 - 存储管理可以看到“NAS”选项。稳定的局域网环境所有设备需连接在同一路由器下。我以最普及的Windows 11系统作为中继站为例进行说明。如果你用NAS或Linux原理相通具体操作路径不同。3.2 在Windows上创建并配置SMB共享文件夹这一步的目的是创建一个文件夹并赋予网络访问权限让摄像机可以像访问一个“网络磁盘”一样向里面写文件。3.2.1 创建专用文件夹在D盘或你希望的位置确保有足够空间新建一个文件夹例如命名为Xiaomi_Cam。这个名字可以随意但建议不要有空格和特殊字符避免兼容性问题。3.2.2 设置文件夹共享权限右键点击Xiaomi_Cam文件夹选择“属性”。切换到“共享”选项卡点击“高级共享”。勾选“共享此文件夹”共享名可以保持默认或修改如CamShare。点击“权限”按钮。在这里我们需要添加一个专门的用户并赋予权限。不建议直接给“Everyone”完全控制权存在安全风险。点击“添加”然后点击“高级” - “立即查找”。在搜索结果列表中找到并选择你的Windows用户名或者专门创建一个新用户如CamUser点击“确定”。在权限列表中为你刚添加的用户勾选“完全控制”、“更改”、“读取”权限点击“应用”和“确定”。3.2.3 配置网络和发现设置解决Win11发现不了SMB的问题这是最容易出错的环节很多用户卡在摄像机找不到SMB共享上。打开Windows“设置” - “网络和Internet” - “高级网络设置” - “高级共享设置”。确保在当前的网络配置文件专用网络下开启了以下选项启用网络发现启用文件和打印机共享关闭密码保护共享重要小米摄像机目前不支持带密码的SMB访问。家庭网络内可以关闭以简化连接。如果担心安全可开启并创建与摄像机匹配的用户名密码但配置更复杂。有时还需要在“控制面板” - “程序和功能” - “启用或关闭Windows功能”中确保“SMB 1.0/CIFS 文件共享支持”下的相关选项是勾选的。虽然SMB 1.0不安全但某些旧设备可能需要。建议先不勾选如果连接失败再尝试。3.2.4 获取共享路径配置完成后你需要知道这个文件夹的网络路径。格式为\\你的电脑IP地址\共享名。例如你的电脑IP是192.168.1.100共享名是CamShare那么路径就是\\192.168.1.100\CamShare。 你可以在文件资源管理器的地址栏直接输入\\localhost\CamShare测试本地是否可访问。3.3 在小米摄像机中配置NAS存储打开米家App进入你的摄像机界面。点击右上角三个点进入设置找到“存储设置”。选择“NAS”或“网络存储”。点击“添加存储设备”选择“SMB”。服务器地址填写你的电脑IP如192.168.1.100。路径填写共享名如CamShare。用户名和密码如果你关闭了密码保护共享这里留空即可如果开启了则填写你在Windows上创建的对应用户名和密码。点击保存或测试连接。如果成功App会显示存储空间信息。在“存储管理”中将默认存储位置从“SD卡”切换到“NAS”。现在摄像机新录制的视频就会直接写入你的电脑共享文件夹了。注意首次切换后摄像机可能会提示格式化这是正常的它会在共享文件夹内创建自己的目录结构通常包含record和alarm等子文件夹分别存放定时录像和移动侦测录像。4. 同步工具选型与配置Alist Rclone 黄金组合当中继站开始稳定接收视频文件后下一步就是如何将这些文件自动同步到网盘。经过对比多种方案如各网盘官方同步盘、第三方开源工具我最终选择了Alist Rclone这套组合拳。它强大、灵活且几乎支持所有主流网盘。4.1 为什么是AlistRcloneAlist它是一个支持多种存储的目录文件列表程序可以将百度网盘、阿里云盘、一刻相册等数十种网盘挂载为一个本地WebDAV服务。简单理解Alist为你所有的网盘提供了一个统一的、标准化的访问接口WebDAV。Rclone这是一个命令行下的云端文件同步工具被誉为“云存储的瑞士军刀”。它支持超过70种存储协议功能极其强大可以高效地进行文件同步、复制、移动、删除等。最关键的是它完美支持WebDAV协议。组合起来的工作流Alist将阿里云盘“转换”成一个本地WebDAV磁盘比如叫AliDrive然后Rclone就可以像操作本地文件夹一样将你的Xiaomi_Cam共享文件夹同步到这个AliDrive。这个方案的优势在于解耦网盘认证、令牌管理由Alist负责同步任务由Rclone负责逻辑清晰。统一无论后端是百度网盘还是阿里云盘对Rclone来说都是同一个WebDAV协议配置方式一致。强大Rclone支持增量同步、断点续传、过滤规则、任务调度等高级功能。4.2 Alist的部署与阿里云盘挂载4.2.1 安装AlistAlist提供了Windows、Linux、macOS等多个平台的版本。以Windows为例访问Alist的GitHub发布页面下载最新版的Windows压缩包如alist-windows-amd64.zip。解压到一个目录例如D:\Alist。你会看到alist.exe可执行文件。打开命令提示符CMD或PowerShell进入该目录cd /d D:\Alist。运行.\alist.exe server来启动服务。首次运行会输出管理员密码请务必记下。服务默认运行在http://127.0.0.1:5244。为了让它开机自启并在后台运行我们可以将其安装为Windows服务# 在Alist目录下以管理员身份运行PowerShell .\alist.exe install # 启动服务 net start alist # 设置服务为自动启动 sc config alist startauto现在Alist服务就在后台运行了。打开浏览器访问http://localhost:5244用刚才记下的密码登录管理后台。4.2.2 挂载阿里云盘在Alist管理后台点击左侧“存储”然后“添加”。驱动选择“阿里云盘Open”。挂载路径填写一个你喜欢的名字如/阿里云盘。最关键的一步获取刷新令牌Refresh Token。在浏览器中登录阿里云盘网页版。按下F12打开开发者工具切换到“Application”应用或“存储”选项卡。在左侧“Cookies”或“本地存储”中找到https://www.aliyundrive.com。寻找一个名为refresh_token的项将其值复制出来。此方法可能随阿里云盘更新而变化也可使用Alist文档中提供的第三方工具页面获取令牌更安全便捷。将复制的refresh_token粘贴到Alist配置的对应字段中。根文件夹ID如果只想同步网盘的某个文件夹可以填入该文件夹的ID通过浏览器地址栏获取。留空则默认为根目录。点击“添加”如果令牌有效稍等片刻就会看到“存储”列表里出现了“阿里云盘”状态为“工作”。此时你的阿里云盘已经通过Alist以一个WebDAV服务的形式暴露在了本地。其地址为http://127.0.0.1:5244/dav/阿里云盘注意挂载路径。4.3 Rclone的配置与同步命令4.3.1 安装与配置Rclone访问Rclone官网下载Windows版本安装或解压后将rclone.exe所在目录加入系统环境变量PATH方便在任何位置调用。打开命令提示符运行rclone config开始配置。输入n创建一个新remote远程存储配置给它起个名字比如aliwebdav。在存储类型列表中输入webdav对应的数字。URL填写http://127.0.0.1:5244/dav/阿里云盘Vendor类型选择other。User用户名和Pass密码填写你登录Alist管理后台的用户名和密码。后续选项可以按回车选择默认。配置完成后你可以使用rclone lsd aliwebdav:命令测试如果列出阿里云盘根目录下的文件夹说明配置成功。4.3.2 编写同步脚本我们不希望每次手动执行命令而是希望定时自动同步。创建一个批处理文件sync_cam.bat内容如下echo off REM 将本地SMB共享文件夹同步到阿里云盘通过WebDAV REM 本地路径注意Windows路径格式 set LOCAL_PATHD:\Xiaomi_Cam REM Rclone remote名称及远程路径 set REMOTE_PATHaliwebdav:/XiaomiCamBackup echo 开始同步摄像机视频... %date% %time% rclone sync %LOCAL_PATH% %REMOTE_PATH% --progress --create-empty-src-dirs --transfers 4 --checkers 8 echo 同步完成 %date% %time% pause参数解释rclone sync同步命令它会使目标远程与源本地保持一致会删除远程端源端没有的文件如果不需要删除用copy命令。--progress显示实时传输进度。--create-empty-src-dirs在远程创建源端存在的空目录。--transfers 4同时传输的文件数可根据网络情况调整。--checkers 8同时进行校验的线程数可提高效率。双击运行这个批处理文件就可以开始第一次全量同步。之后由于sync是增量同步只会传输新增或修改的文件效率很高。4.3.3 实现定时自动同步我们可以使用Windows系统自带的“任务计划程序”来定时执行这个脚本。搜索并打开“任务计划程序”。点击“创建基本任务”。命名如“小米摄像机同步到网盘”。触发器选择“每天”并设置开始时间如凌晨2点网络空闲时和重复间隔如每30分钟一次。操作选择“启动程序”程序或脚本选择你刚才创建的sync_cam.bat文件的完整路径。完成创建。这样系统就会按照你设定的计划自动将Xiaomi_Cam文件夹里的新视频文件同步到阿里云盘指定的目录下。5. 针对百度网盘、一刻相册的替代方案虽然AlistRclone是通用性最强的方案但针对百度网盘有时我们可能希望使用更官方的途径。百度网盘提供了开放的API我们可以使用一些开源工具直接调用。5.1 使用BaiduPCS-Go命令行工具BaiduPCS-Go是一个用Go语言编写的百度网盘命令行客户端功能强大。从其GitHub发布页下载Windows版本。解压后在命令行中运行BaiduPCS-Go.exe login按照提示扫码或输入账号密码登录。登录后可以使用上传命令BaiduPCS-Go.exe upload D:\Xiaomi_Cam\record\ /我的资源/摄像机备份/这会将本地record文件夹下的所有文件上传到网盘的“/我的资源/摄像机备份/”目录。同样可以编写批处理脚本并结合Windows任务计划实现定时上传。优点直接使用官方接口理论上更稳定。缺点需要处理登录状态维护cookie会过期功能相对Rclone单一对于一刻相册可能需要寻找其他专门工具因为它的API可能与百度网盘主站不同。5.2 使用Rclone直接挂载百度网盘非官方Rclone社区也提供了对百度网盘的非官方支持需要通过一些额外步骤配置。这种方法的好处是能和阿里云盘一样统一用Rclone管理。但配置过程相对复杂需要获取百度网盘的API Key和Secret Key且由于百度网盘接口的限制稳定性和速度可能不如官方客户端。对于追求稳定和省心的用户我仍然推荐先通过Alist挂载如果Alist支持该网盘再使用Rclone同步的路径。对于一刻相册由于其与百度网盘同源可以尝试使用百度网盘的API但目标路径需要指向相册的特定目录。更稳妥的方法是关注Alist等项目的更新看是否未来会直接支持一刻相册的挂载。6. 高级优化与故障排查指南一套系统搭建起来只是开始长期稳定运行才是关键。下面分享一些优化技巧和常见问题的解决方法。6.1 同步策略优化过滤、去重与清理摄像机视频文件通常很小但数量多直接全盘同步可能效率不高且网盘空间可能被大量无需长期保存的普通录像占满。文件过滤Rclone的强大之处在于支持过滤规则。我们可以创建一个filter-file.txt文件定义规则。# 只同步移动侦告警录像假设放在alarm目录 alarm/** # 忽略所有其他文件 - *然后在同步命令中加入参数rclone sync ... --filter-from filter-file.txt。这样只有重要的告警视频才会被同步。本地文件清理同步到云端后本地的视频文件可能不需要长期保留。可以写一个额外的清理脚本定期比如只保留最近7天的文件删除本地共享文件夹中的旧文件释放硬盘空间。可以使用PowerShell命令实现# 删除D:\Xiaomi_Cam下超过30天的文件 Get-ChildItem -Path D:\Xiaomi_Cam -Recurse -File | Where-Object LastWriteTime -lt (Get-Date).AddDays(-30) | Remove-Item同样可以将此脚本加入任务计划。网盘去重如果担心脚本重复运行导致网盘出现重复文件Rclone的sync命令本身会根据文件大小和修改时间判断通常不会重复上传相同文件。你也可以使用--checksum参数进行更严格的内容校验但会消耗更多时间和资源。6.2 网络与性能调优SMB协议版本确保你的Windows SMB服务器和摄像机都支持并启用了较新的SMB 2.0或3.0协议以获得更好的性能和安全性。可以在PowerShell中用Get-SmbConnection查看摄像机连接使用的SMB版本。Rclone参数调优--transfers并行传输数和--checkers并行检查数是影响速度的关键参数。对于大量小文件可以适当增加--transfers如8或16。但要注意过高的数值可能会被网盘接口限速或封禁。对于大文件增加--buffer-size如128M可能有益。带宽限制如果同步任务影响了你其他上网活动可以使用Rclone的--bwlimit参数限制上传带宽例如--bwlimit 2M限制为2MB/s。6.3 常见故障与解决方案问题1小米摄像机无法连接SMB共享提示“连接失败”或“找不到设备”。排查防火墙检查Windows防火墙是否阻止了SMB端口通常为445。可以在防火墙入站规则中允许“文件和打印机共享(SMB-In)”规则。检查网络发现确保“网络发现”和“文件共享”已开启且网络类型为“专用网络”。使用IP地址在摄像机配置中服务器地址务必使用电脑的固定局域网IP不要使用计算机名。关闭密码保护共享这是最常见的原因。确保在“高级共享设置”中“所有网络”-“密码保护的共享”设置为“关闭”。启用SMB 1.0作为最后的手段尝试在Windows功能中启用“SMB 1.0/CIFS 客户端”和“服务器”但完成后务必及时关闭因为SMB 1.0不安全。问题2Rclone同步失败提示“Token expired”或“401 Unauthorized”。这是Alist挂载的网盘令牌过期了。需要重新获取阿里云盘的refresh_token并更新到Alist的存储配置中。阿里云盘的refresh_token有效期较长但并非永久。可以考虑使用Alist提供的自动刷新脚本或者定期手动更新。问题3同步任务占用CPU或内存过高。调整Rclone参数降低--transfers和--checkers的数量。使用--quiet或减少日志输出级别。如果文件数量极多考虑使用--fast-list参数来优化列表方式但这可能增加API调用次数。问题4网盘同步速度慢。检查本地网络和网盘服务器状态。阿里云盘通常不限速百度网盘非会员则速度较慢。尝试在网络空闲时段如深夜进行同步。对于百度网盘可以考虑开通会员提升速度或者使用一些第三方加速工具需自行甄别安全性。6.4 方案扩展多摄像机与多网盘备份如果你有多个小米摄像机可以在中继站上为每个摄像机创建不同的共享文件夹如Xiaomi_Cam_01Xiaomi_Cam_02并在摄像机端分别配置。然后为每个文件夹创建独立的Rclone同步任务甚至同步到不同的网盘目录实现逻辑隔离。对于非常重要的数据可以考虑多重备份策略。例如使用Rclone同时同步到阿里云盘和另一个支持WebDAV的服务如坚果云或者先同步到阿里云盘再使用Rclone的rcat或crypt功能加密后同步到另一个存储。命令可以串联在同一个脚本中实现一键多备份。搭建这套系统需要一些前期的学习和调试但一旦稳定运行它所带来的自动化、安全性和便利性是巨大的。你不再需要担心存储卡损坏、数据丢失可以随时随地通过网盘App查看历史录像家中的监控数据真正做到了“双保险”。整个方案的核心思想是利用开放协议和开源工具将不同厂商的封闭产品连接起来构建一个符合自己需求的智能家居数据流。