玩转群晖NAS套件系列五:SSH赋能Moments,解锁智能相册的隐藏潜能!

1. 为什么需要SSH赋能Moments?

群晖NAS自带的Moments套件确实是个非常强大的智能相册工具,它能自动识别照片中的人物、地点和主题,帮你把杂乱的照片整理得井井有条。但用过一段时间后,很多用户都会发现一些让人头疼的问题:同一个人被识别成多个不同的人物相册、某些照片明明是同个主题却被分到不同类别、索引速度越来越慢...这些问题在图形界面里往往找不到解决办法。

这就是SSH大显身手的时候了。通过SSH连接到你的群晖NAS,你可以直接操作Moments的底层文件,修复识别错误、优化索引性能,甚至解锁一些隐藏功能。比如我自己的Moments曾经把同一个人识别成了3个不同的人物,每次手动合并都特别麻烦,后来通过SSH修改了识别插件后,这个问题就彻底解决了。

2. SSH连接前的准备工作

2.1 启用群晖的SSH功能

首先,我们需要在群晖DSM中开启SSH服务。打开控制面板,找到"终端机和SNMP",在"终端机"选项卡下勾选"启动SSH功能"。建议把默认的22端口改成其他端口,比如2222,这样可以提高安全性。改完后记得点击"应用"保存设置。

这里有个小技巧:如果你经常需要SSH连接,可以在"允许的IP地址"里添加你常用的IP,这样只有指定IP才能连接,安全性更高。我就是这么设置的,既方便又安全。

2.2 准备SSH客户端工具

Windows用户推荐使用PuTTY或者Windows Terminal,Mac用户可以直接用系统自带的终端。我个人更习惯用Termius这个跨平台工具,它的界面更友好,还能保存多个连接配置。

连接时你需要知道NAS的IP地址、刚才设置的SSH端口号,以及你的DSM管理员账号密码。第一次连接时会提示你确认NAS的指纹信息,这是正常的安全验证步骤。

3. 解决Moments人物识别问题

3.1 识别不准的根本原因

Moments的人物识别功能依赖于一个叫libsynophoto-plugin-detection.so的插件文件。有时候这个文件版本过旧或者出现损坏,就会导致识别不准确。我遇到过最夸张的情况是,同一个人的照片被分到了5个不同的人物相册里,简直让人崩溃。

通过SSH,我们可以手动替换这个插件文件来解决这个问题。不过在操作前,强烈建议先备份原文件,万一出问题还能恢复。

3.2 具体操作步骤

首先通过SSH连接到你的NAS,然后执行以下命令:

# 切换到Moments插件目录 cd /var/packages/SynologyMoments/target/usr/lib # 备份原文件 sudo mv libsynophoto-plugin-detection.so libsynophoto-plugin-detection.so.bak # 下载修复后的文件 sudo wget https://wp.gxnas.com/wp-content/uploads/2019/10/libsynophoto-plugin-detection.so # 设置正确的权限 sudo chown SynologyMoments:SynologyMoments libsynophoto-plugin-detection.so sudo chmod a+x libsynophoto-plugin-detection.so

执行完这些命令后,回到DSM界面重启Moments套件。你会发现待识别的人物数量开始快速减少,识别准确率明显提高了。

4. 优化Moments索引性能

4.1 重建照片索引

随着照片数量增加,Moments的索引可能会变得臃肿低效。这时候我们可以通过SSH手动重建索引。先停用Moments套件,然后执行:

# 删除旧索引 sudo rm -rf /var/packages/SynologyMoments/target/photo.db # 重建索引 sudo /var/packages/SynologyMoments/target/bin/synophoto-db-tool -rebuild-db

这个过程可能需要一些时间,取决于你照片的数量。我的NAS上有2万多张照片,重建索引大约花了20分钟。重建完成后,Moments的运行速度会快很多。

4.2 调整索引参数

Moments的索引参数默认是为普通家用场景优化的,如果你有特殊需求,可以通过修改配置文件来调整:

# 编辑Moments配置文件 sudo vi /var/packages/SynologyMoments/target/etc/synophoto.conf

在这个文件里,你可以调整以下参数:

  • max_threads:增加索引线程数
  • face_recognition_interval:调整人脸识别频率
  • thumbnail_quality:缩略图质量

修改后记得重启Moments服务使更改生效。

5. 高级技巧:自动化脚本

5.1 定期维护脚本

我们可以创建一个自动维护脚本,定期优化Moments的性能。新建一个moments_maintenance.sh文件,内容如下:

#!/bin/bash # 停用Moments /usr/syno/bin/synopkg stop SynologyMoments # 清理临时文件 rm -rf /var/packages/SynologyMoments/target/tmp/* # 优化数据库 sqlite3 /var/packages/SynologyMoments/target/photo.db "VACUUM;" # 重新启用Moments /usr/syno/bin/synopkg start SynologyMoments

然后设置一个定时任务,比如每周日凌晨3点执行:

# 编辑crontab sudo crontab -e # 添加以下行 0 3 * * 0 /path/to/moments_maintenance.sh

5.2 照片批量处理脚本

如果你需要批量处理照片,比如调整EXIF信息或者重命名,也可以写个脚本自动完成。比如这个脚本可以批量修正照片的拍摄时间:

#!/bin/bash for file in /volume1/photo/*.jpg; do # 获取文件名中的日期 date=$(echo $file | grep -oE '[0-9]{8}') # 使用exiftool修改拍摄时间 exiftool -AllDates="$date" "$file" done

6. 安全注意事项

使用SSH操作NAS虽然强大,但也要注意安全。我有几个建议:

  1. 操作前一定要备份重要文件
  2. 尽量使用普通用户登录,需要root权限时再使用sudo
  3. 完成操作后,可以考虑关闭SSH服务
  4. 定期检查/var/log/auth.log,查看是否有异常登录尝试

记得那次我不小心删错了一个系统文件,差点让整个NAS崩溃,幸好有备份。所以现在每次SSH操作前,我都会先打个快照,这样即使出问题也能快速恢复。