如何写个搜索网盘文件的网站?

公司内部用群晖 NAS 共享文件,大约 2T、100 万个文件,估计占比最大的是设计资源(如图片、PS 和 AI 源件)。 平时找文件得靠命名规律和个人印象, Windows 和 macOS 文件管理器自带的搜索很慢或不可用。有的时候我会 SSH 进入群晖,用 find(1) 建立个索引,然后配合 grep(1) 查找,速度很快。我想写个 Web 界面方便使用,只需要匹配文件名称(包括其路径),能预览图片最好了,有没有相关的技术和工具推荐?

现在查文件比较快的应该是 plocate

(rust的fd比find快但是好像不支持数据库

2 个赞

@guanghui.qu 原来在论坛推荐的 Everything 我找来用过,感觉很不错,但后面又没用了,我记得Everything是内置web服务器并可以设置web界面来使用的,搜索速度很快,但不知道Everything是如何创建索引的

Everything是直接利用NTFS文件系统的 node 数据,文件变动时文件系统已经更新内容,它只需要搜索文件系统的 node 数据即可。

没有文件系统支撑的情况下,传统的方法就是用额外的数据库建索引,但建索引本身是昂贵的,所以搜索速度比Eveything这种慢。

4 个赞

说下我现在的办法,公司也用nas共享文件,大小超过6T+,数量未知(百万+),用fd命令(并不需要ssh进入nas)找出所有指定类型的文件,然后把fd命令的执行结果存下来。

如果nas有新文件存进去,或者某些文件的路径与文件名有改动,这时把fd命令的执行结果与一上次存下来的fd命令的执行结果相比较,就能知道新增或移动了那些文件。

出现一个问题,在文件名和路径都没有变化的情况下,文件内容改变了,这时是发现不了改动的。于是我又写个php脚本,把fd命令的执行结果中每个文件名后面加上文件修改时间戳。

这样nas里我需关注的文件有变动,有增加或删除我都能及时知道.

1 个赞