介绍
在 2020 年 4 月份买群辉 DS218play 时就打算将文本,图片,视频等资料好好规整规整,毕竟工作 5 年,一直处于学习积累的状态,所以手头的资料也囤积了不少。正好刚梳理完 2021 年的年度总结,趁此机会也把手头的照片也整理一下,从 2008 年开始,差不多有 8680 张图片,占了 30G 的存储空间。虽然这些照片 icloud 帮我管理的还挺好,不过该方法还是有问题。第一每个月 6 块钱 50G 的存储空间是一项长期投入,第二照片的管理在别人手里,换成非苹果系的手机迁移很麻烦。第三家人间无法共享相册,各自管理。
鉴于上面的原因以及手头现有的资源,打算按照三步走来实现基于群辉 NAS 的家庭相册构建。第一步是 NAS 挂载机器;第二步是 icloud 照片定时同步 NAS 盘;第三步是使用群辉上应用来对相册进行页面展示。当然,图片相册整理好,后面可以操作的空间还是很大的,比如构建 milvus 服务去图片去重,使用 PhotoPrism 对图片进行智能分类,检索等。
NAS 挂载
NAS 挂载这步其实可有可无,主要是因为我规划群辉 DS218play 作为我和家庭的共享存储设备。如果没有这个设备,笔记本电脑的硬盘,移动硬盘也是可以的。使用群辉 NAS 的好处有以下几点:
- 私人云盘,共享存储
- QuickConnect 内网穿透,资料同步
- 丰富的 APP,对文本,图片,视频进行处理展示
群辉 NAS 支持的文件共享方式有三种,分别是 SMB, AFP 和 NFS。鉴于我的服务器运行的操作系统是 Ubuntu,所以我采用的是 NFS 的方式。
Server Message Block 是一种应用程序网络传输协议,又称网络文件共享系统(Common Internet File System)。由微软开发,主要功能是使网络上的机器能够共享计算机文件、打印机、串行端口和通讯等资源。通常用于局域网环境,Windows、Mac、Linux、Android 都能很好的使用。与功能类似的网络文件系统(NFS)相比,NFS 的消息格式是固定长度,而CIFS 的消息格式大多数是可变长度,这增加了协议的复杂性。
Apople Filing Protocol 也称 Apple文件协议,是一个专有网络协议。仅用于mac操作系统,可以用来对mac系统备份,也就是timemachine 时间机器功能
Network File System 是一种分布式文件系统。和smb差不多,适用于各种操作系统,比smb轻量,理论比smb性能好。
挂载步骤
NAS 开启 NFS
文件设置 NFS 权限
NFS规则中服务器名称或IP地址填写局域网中需要挂载的 IP 地址。路径挂载
1# NFS 挂载(root权限) 2## 192.168.3.100 是 NAS 在局域网中的 IP 地址 3## /volume1/photo 是需要挂载到本地的 NAS 目录,就是上面 NFS 权限截图中装载路径 4## /home/hjy/Pictures/nas_photo 本地目录 5sudo mount -t nfs 192.168.3.100:/volume1/photo /home/hjy/Pictures/nas_photo
挂载验证
1# 使用df命令查看 192.168.3.100:/volume1/photo 2df -h 3# 图形界面的文件夹中查看目录 /home/hjy/Pictures/nas_photo
icloud同步
自从 5 年前换上了 iPhone SE, 就在 Apple 全家桶里没有切出去。其他不说,就照片这块各个设备之间同步还是非常方便的。而且新的苹果设备只要登录 iCloud 就能够查看所有照片。但这种方式还是有些弊端。
- 仅适用苹果全家桶,android 不适用(家庭中并不是都是苹果手机)
- 照片越来越多,6 元/月 50 G的容量捉襟见肘
- 照片整理比较麻烦,特别是多个设备有相同主题时。
这些问题的最优解法就是周期(天级)同步 iCloud 中的照片到 NAS 上,定期(每月,每季或每年)整理(挑选/拷贝/修理)图片成相册。iCloud 的照片这样处理,其他手机的照片也是类似的处理方法。
iCloud 照片的同步方法有 icloud_photos_downloader, 它是一个 python 开发的命令行工具,只需要提供 Apple ID 的账户和密码就能够同步照片,配合 crontab 即可完成周期同步的任务。此外 boredazfcuk 基于该工具提供了 docker 版本 docker-icloudpd。它的优点是不需要准备 Python 的环境,还提供了 HEIC 转换成 JPG 以及同步完成提醒的功能,缺点就是需要提供 docker 的环境。博文 备份iCloud照片到NAS提供了 docker 版本的操作说明。我自己使用的第一个。
此外,这两个仓库源码还是值得研究学习一下的。做的事情很简单,就是从 iCloud 上下载图片到本地。第一个仓库 icloud_photos_downloader 就干了这个事,它通过 requests 库访问 iCloud 网络服务器,click 库提供命令行功能,以及打包,Dockerfile 等都挺完善的。第二个仓库 docker-icloudpd 更偏运维开发,将该功能部署完善,并提供监控报警功能。
图片展示 photo station/moments
iCloud 的照片除了同步的优势外,还有一个优势是图片管理。虽然它的图片编辑功能不强,但是简单裁剪调整还是可以的。此外相册功能以及回忆功能还是非常实用的。切换到群辉 NAS 后,还是有很多套件来解决相册管理,图片展示的问题。首选就是 Photo Station 套件,它是专为专业摄影师打造,用于管理图片存储、随时随地共享和访问精选集等。其次 Moments 套件也很好用,它对标的就是 Mac 的照片(连图标都很像)。
高级玩法
其实所谓的高级玩法都是基于整理好的图片集的。就像研究生写论文时碰到最大的问题是数据问题,解决了这个问题后面就八仙过海各显神通了。核心就是通过技术手段(OCR,CV等)给图片打标签,然后构建 milvus 服务提供图片检索。这件事可以先适用 PhotoPrism,并学习一下该软件的源码,还是可以学到很多东西的。