首页/用家里 NAS(Samba)备份手机照片

用家里 NAS(Samba)备份手机照片

作者 Azalea · 实测日期 2026-03-09

Samba 后端给「照片离开手机,但还在家里」的人。协议走 TCP 445,不是 HTTP,没有对象存储那套 Host 头和预签名。Azalea(net.duguying.photos)provider 设为 samba,endpoint 填 NAS 主机,bucket 填 share 名,用户名密码走 access/secret。不链 libsmbclient。不支持预签名 URL,也不探测盘容量——应用不显示剩余空间,满了会在 write 时报错。原图不经过 Azalea 服务器。

2026 年 1 月至 3 月实验室:群晖 DS220+,DSM 7.2.2,share 名 photos,SMB3,千兆有线到 NAS,手机走 5 GHz Wi-Fi。用户 album 只开这一个 share,关掉访客。iPhone 14 Pro 先写 9,023 项约 41.2 GB,小米 14 再写 6,744 项约 28.7 GB,合计 15,767 项、69.9 GB。同一库可被两端列出。失败 4 次都是手机休眠掉会话,不是盘满。

步骤

  1. 在 DSM 建用户 album,建 share photos,权限只给这个用户写这一个 share。关掉访客。不要把 445 映射到公网。这是局域网备份,不是随时随地云盘。
  2. 手机与 NAS 同一网段。iOS:设置里打开 Azalea 的本地网络权限。实验室第一次连 nas.local 失败,就是没弹权限;打开后改用 IP 192.168.1.32 更稳,这套路由上 mDNS 会偶发丢。
  3. 打开 Azalea,权限选「所有照片」或 Android 完全访问。
  4. 「备份存储」→「新建配置」→ Samba。主机填 IP,bucket 填 photos,填用户名密码。root 可留空或填前缀。extra.domain 工作组按 NAS 实际,extra.port 默认 445,extra.guest 仅在你真允许空密码时才开。
  5. 保存。构造引擎时不连网。第一次 list 或 write 才建会话。配错密码你在点开始备份后才看到,不是保存表单时。
  6. 打开自动备份,看「备份状态」待处理。插电。小米 14 HyperOS 2.0.5 会杀后台,通知还在任务已死,打开应用续。iPhone 锁屏同样可能掉会话,4 次失败都是这一类,重试后齐。
  7. 待处理 0 后抽查。不要在 File Station 里改名。第二台手机用同一 share 认领,不要新建另一个 share 名「看起来像 photos」。

配置字段

字段 含义
provider samba
endpoint 主机,IP 或 nas.local,可带 smb://
bucket share 名,不是文件夹昵称
access_key / secret_key 用户名 / 密码
root share 内前缀,可选
extra.domain 工作组 / AD
extra.port 默认 445
extra.guest true 时允许空密码

并发上限 8。普通写入先写同目录临时名再 rename;SMB rename 不能覆盖,覆盖时会先删目标。HEIC 占比 44% 来自 iPhone 侧,小米侧主要 JPEG。两端 object key 不冲突,key 里带设备维度。

失败

  • 主机填 xxx.local 且本地网络权限关着:iOS 静默失败。去系统设置打开,或改 IP。
  • bucket 填了文件夹昵称而不是 share 名:连上但路径不对。DSM 里 share 就叫 photos。
  • 访客开着、密码随便填:实验室关掉访客。不要用访客除非服务器允许空密码。
  • File Station 改名:认领找不着物理路径。小米侧会以为对象没了。
  • 盘满:没有剩余空间条。write 报错后你才知道。去 DSM 看存储池。
  • 把 NAS 当 USB 选:本篇是 samba provider。USB 要物理盘加 bookmark / SAF。网络位置假装 USB 会在权限模型上翻车。
  • 出门仍用 Samba:445 打到公网极其危险。出门切 COS/OSS/S3 那份配置。应用支持多份配置,回家再切回来。

家庭柜里那台群晖的现场约束

DS220+ 放客厅柜子,电脑网线,手机 Wi-Fi。千兆有线只保证 NAS 到路由,手机仍受 5 GHz 质量和休眠限制。不要用「NAS 是千兆所以备份该跑满 100 MB/s」来判断 Azalea 卡死。小文件、SMB 会话、相册导出开销,都会把平均速度拉到远低于链路标称。15,767 项、69.9 GB 是两台手机累计,不是一晚上刷完。

用户 album 不要和群晖管理员共用。管理员密码进手机表单,日后 DSM 日志和权限边界都会乱。share 不要开回收站「误删保护」还指望应用层墓碑双写——File Station 还原文件不会更新 Azalea 的 json 逻辑。权限只给这一个 share,避免 album 看到家人的私人文件夹。

iOS Info 必须声明本地网络用途,否则 *.local 静默失败。这是宿主应用责任。真机仍建议 IP。Android 对 mDNS 因厂商而异,IP 同样更稳。会话在第一次读写时建立,保存「新建配置」的瞬间没有绿色对勾代表连通。配错后「备份状态」会报错,改密码再点开始,不必删配置。

两台手机写同一 share 时,不要在 DSM 上做「共享文件夹克隆」当备份。克隆是另一份路径,认领对不上。真正的第二份介质应是 USB 或 COS,另建配置。出门切对象存储,回家切 Samba,列表里两份并存。不要把 Samba 配置的 endpoint 临时改成公网 IP。

休眠掉会话不是盘故障。小米 14 打开应用后续上,iPhone 14 Pro 同样。4 次失败都记在案例页,重试后 15,767 项齐。不要为此把 share 改成 guest、不要为此把防火墙对 445 打开到光猫。应用层重试即可。备份状态里的错误文案指向会话,不要指向「群晖坏了」去重建存储池。

时间线:2026-01 起 iPhone 侧先写,2026-03 小米侧补写。两台不必同一天。家里第二台新手机认领,流程与换机清单相同:同一 endpoint、同一 share 名、同一用户。名称字段可写成「客厅群晖」,不影响 bucket。权限「所有照片」仍要给,否则新机只能追加子集。

和 USB、对象存储怎么分工

USB:盘在书包,iOS 选目录 bookmark,Android SAF bridge,exFAT 转义,.album/manifest.jsonl 在盘上。iPhone 15 实验室 86.41 GB 走的是 USB。NAS:盘在客厅柜子,两台手机共用,DS220+ 已复现。对象存储:两地、密钥在你账号。Pixel 8 → iPhone 16 的 81.95 GB 走 COS。换机当天选一种主路径,见清单篇。

Android 不能映射 iOS local_identifier,在 NAS 上认领同样没有收藏。原文件在。Mate 60 的 OTG 拔盘故事属于 USB,不要用拔网线模拟;网线断的是会话重试,不是 12 个磁盘临时文件。

FAQ

为什么保存配置时不检查密码? 第一次读写才建 SMB 会话。到「备份状态」点开始后看错误。

iPhone 和安卓能写同一 share 吗? 能。15,767 项已经这样做。不要改对方目录名。回家后在「备份存储」里切回 Samba 那份配置即可。

应用能显示 NAS 还剩多少空间吗? 不能。没有 probe() 的容量数字,进度条不能按盘剩余估 ETA。去 DSM 看。

mDNS 不稳定怎么办? 填 IP。实验室 192.168.1.32。路由器换过之后更新配置。iOS 本地网络权限打开后仍建议 IP,不要依赖 nas.local 过夜备份。

满了会丢已完成的照片吗? 已完成的在 share 里。新写入失败直到你腾空间。不要为此重建 share,重建等于空库。客厅柜子那台 DS220+ 的存储池容量以 DSM 为准,手机「备份状态」不显示剩余空间。权限选「所有照片」后再让家人第二台认领,避免子集写进同一 share 造成误会。