相关文章

也可以看看

群辉NAS构建家庭相册

 |   

介绍

在 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 的方式。

SMB vs AFP vs 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性能好。

挂载步骤

  1. NAS 开启 NFS

    nas_nfs

  2. 文件设置 NFS 权限

    folder_setting
    NFS规则中服务器名称或IP地址填写局域网中需要挂载的 IP 地址。

  3. 路径挂载

    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
    
  4. 挂载验证

    1# 使用df命令查看 192.168.3.100:/volume1/photo
    2df -h 
    3# 图形界面的文件夹中查看目录 /home/hjy/Pictures/nas_photo
    

icloud同步

自从 5 年前换上了 iPhone SE, 就在 Apple 全家桶里没有切出去。其他不说,就照片这块各个设备之间同步还是非常方便的。而且新的苹果设备只要登录 iCloud 就能够查看所有照片。但这种方式还是有些弊端。

  1. 仅适用苹果全家桶,android 不适用(家庭中并不是都是苹果手机)
  2. 照片越来越多,6 元/月 50 G的容量捉襟见肘
  3. 照片整理比较麻烦,特别是多个设备有相同主题时。

这些问题的最优解法就是周期(天级)同步 iCloud 中的照片到 NAS 上,定期(每月,每季或每年)整理(挑选/拷贝/修理)图片成相册。iCloud 的照片这样处理,其他手机的照片也是类似的处理方法。

iCloud 照片的同步方法有 icloud_photos_downloader, 它是一个 python 开发的命令行工具,只需要提供 Apple ID 的账户和密码就能够同步照片,配合 crontab 即可完成周期同步的任务。此外 boredazfcuk 基于该工具提供了 docker 版本 docker-icloudpd。它的优点是不需要准备 Python 的环境,还提供了 HEIC 转换成 JPG 以及同步完成提醒的功能,缺点就是需要提供 docker 的环境。博文 备份iCloud照片到NAS提供了 docker 版本的操作说明。我自己使用的第一个。

icloud2nas

此外,这两个仓库源码还是值得研究学习一下的。做的事情很简单,就是从 iCloud 上下载图片到本地。第一个仓库 icloud_photos_downloader 就干了这个事,它通过 requests 库访问 iCloud 网络服务器,click 库提供命令行功能,以及打包,Dockerfile 等都挺完善的。第二个仓库 docker-icloudpd 更偏运维开发,将该功能部署完善,并提供监控报警功能。

图片展示 photo station/moments

iCloud 的照片除了同步的优势外,还有一个优势是图片管理。虽然它的图片编辑功能不强,但是简单裁剪调整还是可以的。此外相册功能以及回忆功能还是非常实用的。切换到群辉 NAS 后,还是有很多套件来解决相册管理,图片展示的问题。首选就是 Photo Station 套件,它是专为专业摄影师打造,用于管理图片存储、随时随地共享和访问精选集等。其次 Moments 套件也很好用,它对标的就是 Mac 的照片(连图标都很像)。

photo_station
moments

高级玩法

其实所谓的高级玩法都是基于整理好的图片集的。就像研究生写论文时碰到最大的问题是数据问题,解决了这个问题后面就八仙过海各显神通了。核心就是通过技术手段(OCR,CV等)给图片打标签,然后构建 milvus 服务提供图片检索。这件事可以先适用 PhotoPrism,并学习一下该软件的源码,还是可以学到很多东西的。

photoprism

参考文献

  1. 服务器消息块SMB
  2. 苹果归档协议AFP
  3. 网络文件系统NFS
  4. Linux通过NFS服务挂载群辉NAS为虚拟磁盘
  5. 如何备份iCloud照片到NAS?
  6. icloud照片下载源码
  7. docker-icloudpd源码
  8. photoprism
技术茶话会
< 前一篇