环境
NAS 系统:群晖
产品型号:DS3615xs
DSM 版本:DSM 6.1.7-15284 (update 2)
DSM 版本日期:2018/05/19
洗白:未洗白
此方式会出现的问题
感谢 Houiin 反馈。
此方式会导致 Drive 套件,Photo 套件无法正常使用。
挂载后,不识别挂载后的文件夹,仅会识别挂载前的文件夹;
同时,由于识别错误,会导致以上不能进行任何文件操作,且会报错。
原因
群晖某些套件中禁止使用 Mount 后的数据。导致在操作时会报错使用了 Mount 命令。
更新 2021-03-12
此问题在 2013 年就友网友在官方社区反应,到目前还是未解决。
官方给出的回复是,群晖不提供 Mount 方式,且 Moment 设计初衷就是为个人相册管理。
描述
群晖的 Moments 是一个较为智能的照片库,具有人脸识别,主题识别,地理位置识别等功能,且在 iPhone 对接中较为友好(与 Photo Station 相比),许多地方都可使用,某些软件中的媒体文件可以直接通过分享功能直接上传的 Moments 中,十分方便。
但是,如果目前有已有一个文件夹的照片,也想用 Moments 来进行统一照片管理(人脸识别,主题识别等功能),且在 NAS 中仅存储 1 份文件的情况下(非复制操作),该如何操作?
目的
通过此方法可以将整理好的无数个照片文件夹全部移交 Moments 管理,且不会打破已有的文件结构,且在群晖中仅存储一份数据,对于照片大户来说可以有效的节省存储空间。你的留言是我最大的动力。
解决
演示环境
- 共享文件夹:媒体库
- File Station 中的文件夹:媒体库/公共媒体
- 公共媒体:包含文件夹,视频,图片等
- 允许使用 Moments 功能,且需使用"公共媒体"的群晖账号:people1
步骤
公共媒体设置
公共媒体:右键 -> 复制:所在位置 -> 得到在群晖中公共媒体真实位置,得到目录结构如下:
/volume1/媒体库/公共媒体
公共媒体:右键 -> 权限:设置权限如下:
# 不设置权限会导致错误,见文章末尾。
# people1
类型:允许
应用于:全部
权限:
——管理:全勾选
——读取:全勾选
——写入:全勾选
# Everyone
类型:允许
应用于:全部
权限:
——读取:遍历文件夹/执行文件
用户 Moments 设置
在用户 people1 的 Moments 中创建"公共媒体"文件夹,最终目录结构如下:
/volume1/homes/people1/Drive/Moments/公共媒体
硬挂载公共媒体
使用 mount --bind 将"公共媒体"真实位置硬挂载到用户 people1 的 Moments 的"公共媒体"中。
方式一(推荐)
控制面板 -> 任务计划 -> 新增:触发的任务 -> 用户定义的脚本 -> 设置参数如下:
# 常规
任务名称:mount01
用户帐户:root
事件:开机
# 任务设置
# 用户定义的脚本
mount --bind /volume1/媒体库/公共媒体 /volume1/homes/people1/Drive/Moments/公共媒体
方式二
通过 SSH 到群晖中,执行命令。使用该方式,请自行配置开机时自动挂载,否则可能会导致挂载在关机后失效。
sudo mount --bind /volume1/媒体库/公共媒体 /volume1/homes/people/Drive/Moments/公共媒体
重建索引
在 Moments 中:设置 -> 常规 -> 索引:选择全部重建索引 -> 重建索引。
等待索引创建完成,用户即可在 Moments 中查看到"公共媒体"中的媒体了。
文章推荐
解决 Moments 视频无略缩图问题,可查看:
过程中遇到的问题
使用软连接 ln -s 会导致如下问题:
- 图片无略缩图,且不可查看。
- 视频无略缩图,但点击可播放。
- 在用户 Moments 目录中无法查看到软链的文件。
- 会产生错误日志。硬挂载时若不设置权限,也会产生类似错误。错误日下:
exception /source/synophoto/src/webapi/common/download/thumbnail.cpp:90 make thumbnail reqst fail
NAS synophoto-bin-metadata-wrapper: /source/synophoto-plugin-metadata/src/metadata_wrapper/metadata_wrapper.cpp:54 path is not illegal
NAS synoscgi_SYNO.Photo.Thumbnail_1_get[28285]: exception /source/synophoto/src/webapi/common/download/thumbnail.cpp:53 file doesn't exist
试试这个:
```shell
#!/bin/bash
echo "### start attaching iscsi"
if [ -z "$(grep -e ^iscsid.startup /etc/iscsi/iscsid.conf)" ]; then
echo "### add iscsid.startup"
echo "iscsid.startup = /bin/systemctl start iscsid" >> /etc/iscsi/iscsid.conf
fi
echo "### discovery iscsi"
iscsiadm -m discovery -t sendtargets -p 192.168.XXX.xxx
echo "### login iscsi"
iscsiadm -m node -T iqn.2005-10.org.freenas.ctl:dsm.active-backupfor-business -p 192.168.XXX.xxx:3260 -l
echo "### mount iscsi"
mount /dev/isda1 /volume1/@iscsi_data
echo "### remount iscsi"
mount -o remount,synoacl /volume1/@iscsi_data
echo "### bind ActiveBackupforBusiness"
mount -o bind "/volume1/@iscsi_data/ActiveBackupforBusiness" "/volume1/ActiveBackupforBusiness"
echo "### finished attaching iscsi"
echo "### restart pkgctl-ActiveBackup.service"
systemctl restart pkgctl-ActiveBackup.service
# https://es-dsm:5001/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=login&account=XXXXXXXX&passwd=XXXXXXXX&format=cookie
# https://es-dsm:5001/webapi/auth.cgi?api=SYNO.ActiveBackup.Activation&method=set&version=1&activated=true&serial_number=2023NAS123456
```
```shell
mount -o remount,synoacl /volume1/YOUR_PATH
```
```shell
root@dsm:~# synoacltool -get '/volume1/@iscsi_data/ActiveBackupforBusiness'
ACL version: 1
Archive: has_ACL,is_support_ACL
Owner: [root(user)]
---------------------
[0] user:admin:allow:r-x---a-R-c--:fd-- (level:0)
[1] user:ActiveBackup:allow:rwxpdDaARWc--:fd-- (level:0)
[2] group:ActiveBackup:allow:rwxpdDaARWc--:fd-- (level:0)
[3] group:administrators:allow:r-x---a-R-c--:fd-- (level:0)
```
mount - remount 可以合并:
mount -o defaults,synoacl --types btrfs --source UUID="1c63dbb3-9a05-4d66-bb0e-2815d6194dc7" --target '/volume1/@iscsi_data/'
如果是本地的话 我感觉 只要copy一下权限就好了
感觉有可能。但是目前没用黑裙了。等有空试试。赞
权限查看:
```shell
root@dsm:~# synoacltool -get '/volume1/@iscsi_data/ActiveBackupforBusiness'
ACL version: 1
Archive: has_ACL,is_support_ACL
Owner: [root(user)]
---------------------
[0] user:admin:allow:r-x---a-R-c--:fd-- (level:0)
[1] user:ActiveBackup:allow:rwxpdDaARWc--:fd-- (level:0)
[2] group:ActiveBackup:allow:rwxpdDaARWc--:fd-- (level:0)
[3] group:administrators:allow:r-x---a-R-c--:fd-- (level:0)
```
mount - remount 可以合并:
mount -o default,synoacl --types btrfs --source UUID="1c63dbb3-9a05-4d66-bb0e-2815d6194dc7" --target '/volume1/@iscsi_data/'
如果是本地的话 我感觉 只要copy一下权限就好了
default要加s|´・ω・)ノ
权限复制:synoacltool -copy PATH_SRC PATH_DST
权限继承:synoacltool -enforce-inherit PATH # 拷贝父文件夹权限
我遇到的是关于视频库索引的问题 dsm 7.2 从homes里面的某些目录 mount --bind 到video 下 video station 、 plex 、emby 、 jellyfin 都不能索引出视频文件。。。啊 烦死了
没用 dsm 7,目前连 dsm 6 都没用了。 跌跌撞撞 我又用回了 SMB... 真香...
洗澡的时候想到了用ln的方式,后续试了下不行,后面再尝试mount方式的时候发现可以了,就是要手动建立一下索引其他的感觉问题不大,稳如老狗.
不知道为什么一定要手动“重建索引”才可以,如果不重建的话,moments没办法自动索引新的照片==
这样有个问题就是,如果相册里已经存在大量照片,那么重建索引就会耗费很长时间
这个是肯定的啊。通常你在通过 moment 直接上传照片的时候,那时候就已经建立索引了。
但是通过这个方法一次性添加大量图片,moment 里面根本就没有索引,肯定就慢了。
请教下如果是两不同设备能做到吗?/volume1/媒体库/公共媒体 /volume1/homes 因为你这个volume1还是在同一个设备下的,如是/volume2/媒体库/公共媒体 /volume1/homes 这样能做成链接吗?还能索引?
可以的。
小细节问题
权限设置是否需要应用到子文件夹及文件,是否能添加其他用户及权限?
权限设置是否需要应用到子文件夹及文件:需要,这里应用于全部。
是否能添加其他用户及权限?没理解...如果其他人也需要这个公共库,跟 people1 一样挂载过去就好。
大佬 想请教一下
我家现在moment 是每个家庭成员分别用自己的账号同步手机相册
导致每人只能查看自己的照片
用这种方式能不能用一个账号管理索引其他用户上传的照片?
不好意思。没理解你的实际诉求。
是需要所有人都能看所有人上传的媒体?如果是,那就一个账号,不就好了?
如果所有人都可以看部分,记得 Moments 是有共享相册操作的,可以创建相册,将照片加入,共享给其他用户。
"能不能用一个账号管理索引其他用户上传的照片",这个也没太理解,管理员用户可在 file station 中进行管理。如果你说的是:管理员可以将其他用户创建相册,相册,分类,标签,重新编排,这个好像不好实现。
这里实现的是,公共媒体由管理员手动上传,或者同步,其他人只是查看。
感觉7.0会解决现在所有的问题
可惜黑群不知道啥时候能上7.0
不好意思 是我没表达清楚
需求不是所有人都看所有人上传的媒体
需求是依然保持每个用户自己上传及查看自己的媒体
但是有个管理员账号什么的可以用moment索引所有用户上传的媒体以及管理员手动上传的公共媒体。
7.0 还是得靠国外 dalao 了,有点无能为力。
"管理员账号什么的可以用moment索引所有用户上传的媒体": 这个可以通过挂载实现,可尝试将其他用户挂载到管理员那。
"管理员手动上传的公共媒体":这可以通过创建一个相册,将其共享实现,自带这个功能我记得。
挂载外接usb硬盘的东西,moments和dirve都认不到,file station可以认到
USB的设备,没有尝试过。你说的“认不到”,是根本看不见这个目录,还是说看见了这个目录,但是目录内没有文件。
没有看过实际情况,不好判断。
不过 moments 目录权限设置错误的话,或者软链的话,是会出现这个问题(看不见目录)。
mount了usb的盘上目录后,filestation里能看的,moments和drive里看不到
filestation里能看见,moments看不见,你检查下是否没有设置“公共媒体设置”,或者是否更行 moment 索引。
drive里看不到,目前来说是正常的,Houiin 已经提出过这个问题,drive 应该是使用了某些索引或系统数据库,导致虽然挂载的其他文件夹,但是却无法识别,还会导致 dirve 权限错误,无法进行任何文件相关操作,这个还在研究中。
如果以上还是不行的话,那可能 U 盘设备就比较特殊了。因为这没有多余 U 盘,等空了买 U 盘试下。
作者大大,mount--bind之后确实解决了moments读取其他volume内文件的问题。但是之后导致了synology drive 在home文件夹下面无法对文件进行操作,无法创立文件夹、修改文件、上传文件、删除文件。看起来是权限配置还是有问题。不知道你有没有这个问题
同遇到这样的问题,没有办法读写。可是之前这样做明明可以的,不知道哪里出了问题,求帮忙
使用这个方法挂在会导致其他套件无法使用,在文章中已经写了。目前还没有找到解决办法。
你说的是 people1 这个用户无法对公共媒体进行操作吗?
因为文中只是为了解决读取问题,所以给 everyone 的权限只是读取,没怎么使用 Drive 这个套件,你可尝试下赋予全部权限。
不行的话,等空了再看看,最近比较忙。
~~~
# Everyone
类型:允许
应用于:全部
权限:全部勾选
~~~
j即使给了everyone也不行。同样的问题也出现在photostation
只要/photo下面有mount bind的文件夹,就会出现权限问题,无法上传照片
我people1也给了读取权限,所有权限都给了。就是不行。File Station是可以进行文件操作的,但是drive不行
好的,这个等年后看下。有点忙