从2022年4月6日发布的 Synology Drive Server 3.1.0-22920 开始,管理控制台提供了一个转换“我的文件”功能,可以将索引范围扩展到整个家目录,这个转换无法恢复。

这导致家目录下所有文件都被索引,占用了非常多的资源。具体表现为:
- 使用SSH终端访问服务器的时候,会产生诸如
.ssh、.zsh_histroy等隐藏文件夹和文件,每一次执行命令都会更新.zsh_history触发索引扫描(可以在Web控制台看到 Universal Search 正在索引)。 - Synology Drive 页面会显示这些隐藏文件,给管理文件带来极大不便。
- 如果使用家目录作为工作目录,拉取项目,编译代码,产生中间文件被索引会占用大量系统资源。
我尝试向群晖技术支持寻求帮助,但是得到回复这是不可能的。但是我找到了一个方法可以恢复到之前的只同步 Drive 子文件夹。
免责声明
您需自行承担操作的风险,由此导致的任何数据丢失,本人概不负责。
您需自行承担操作的风险,由此导致的任何数据丢失,本人概不负责。
环境说明
- DS920+
- DSM 7.3-81180
- Synology Driver Server 4.0.0-27887
准备工作
- 确保您已备份所有数据。
- 确保 Synology Drive 客户端当前不存在同步任务,如果有请删除任务,完成后再重新添加。
- 确保开启SSH终端访问。
操作过程
使用SSH终端连接到 NAS,使用sudo -i提权。
ssh username@nas_address
sudo -i停止 Synology Drive Server 服务。
synosystemctl stop pkgctl-SynologyDrive.service备份数据库文件
进入/volume1/@synologydrive/@sync文件夹,对关键数据库进行备份,备份到共享文件夹或者外部存储设备。
cd /volume1/@synologydrive/@sync
cp syncfolder-db.sqlite /path/to/folder/syncfolder-db.sqlite使用sqlite3打开数据库文件,修改config_table表,将index_home_config改为0。
sqlite3 syncfolder-db.sqlite
# sqlite
sqlite> UPDATE config_table SET value='0' WHERE key='index_home_config';
sqlite> .exit重启 Synology Driver 服务。
synosystemctl start pkgctl-SynologyDrive.service删除旧的 Universal Search 索引文件夹。
Synology Drive 使用 Universal Search 来进行文件夹索引,它会自动为每个用户创建对应的索引文件夹条目,但是之前已经添加的索引文件夹并不会自动删除。
在 Universal Search 设置页面可以看到Synology Drive分组下删除按钮是灰色的,需要通过更改配置文件来删除。

使用 vim 编辑/usr/syno/etc/packages/SynoFinder/fileindex.folders文件,将需要删除的条目group改为空,稍后在配置页面点击刷新,会看到该条目在用户自定义分则下,此时可用删除按钮删除相应条目。
[
{
"audio": false,
"document": false,
"group": "",
"name": "Synology Drive (xueye)",
"owner": "SynologyDrive",
"path": "/homes/xueye",
"paused": false,
"photo": false,
"privileged": true,
"share_path_before_pause": "",
"video": false,
"volume_to_be_clean": ""
},
{
"audio": false,
"document": false,
"group": "SYNO.SDS.Drive.Application:drive:displayname",
"name": "Synology Drive (xueye)",
"owner": "SynologyDrive",
"path": "/homes/xueye/Drive",
"paused": false,
"photo": false,
"privileged": true,
"share_path_before_pause": "",
"video": false,
"volume_to_be_clean": ""
}
]也可以在配置文件中直接删除对应项目,但是在配置页面刷新只能看到条目消失,并没有真实生效,需要重启 Universal Search 服务,让它读取新的配置文件才能生效。在重启 Universal Search 服务也会导致依赖它的服务一并重启。推荐使用设置页面删除,在设置页面通过删除按钮删除还会自动删除相关索引。