玩转群晖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 TerminalMac用户可以直接用系统自带的终端。我个人更习惯用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 ax 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.sh5.2 照片批量处理脚本如果你需要批量处理照片比如调整EXIF信息或者重命名也可以写个脚本自动完成。比如这个脚本可以批量修正照片的拍摄时间#!/bin/bash for file in /volume1/photo/*.jpg; do # 获取文件名中的日期 date$(echo $file | grep -oE [0-9]{8}) # 使用exiftool修改拍摄时间 exiftool -AllDates$date $file done6. 安全注意事项使用SSH操作NAS虽然强大但也要注意安全。我有几个建议操作前一定要备份重要文件尽量使用普通用户登录需要root权限时再使用sudo完成操作后可以考虑关闭SSH服务定期检查/var/log/auth.log查看是否有异常登录尝试记得那次我不小心删错了一个系统文件差点让整个NAS崩溃幸好有备份。所以现在每次SSH操作前我都会先打个快照这样即使出问题也能快速恢复。