go扫描指定路径下,文件过多

有这样一个需求,一个平台把生成的文件,放到制定路径下,文件命名规则为唯一id+_时间戳,Go这边去扫描将目标文件读取加密后,按照固定文件大小(例如源文件1G,切割成10m每个)分割。这样就有一个问题,等待以后文件越来越多,扫描的成本,也越高,请问有哪些提高效率的方法呢? 把每一个转换好的文件全部记录在数据库中吗?
已邀请:

huhuyou2 - fish

赞同来自: 明_

#### 恰好我前段时间也在玩一个类似的需求,我使用的MySQL+DataConverge+Agent的方式来玩的,关于你说的文件持续增长的问题,我的处理主要集中在Agent上,方法如下:
1. Agent+lastConf.ini,把配置信息和最后一次采集的文件时间戳记录下来
2. Agent启动时间点到了,先加载lastConf.ini里面的配置,再获取上次读取的文件时间戳T
3. 在采集目录下寻找离时间戳T最新的一个文件开始读取

#### 嗯,大概思路就是这样,因为是自己的小玩具,异常场景考虑的比较少,供你参考一下,有啥改进建议欢迎给我指点一下,哈哈

codinghxl

赞同来自: 明_

启动后可以用inotify监控目录,有新文件的时候会主动通知程序,然后只需要增量读取新的文件就好了嘛。

皇虫 - PHP后端与web前端程序员

赞同来自: 明_

我之前也遇到类似的问题,文件太多,导致服务器的磁盘的一个不记得是什么指标数据被用完了,当时磁盘空间还是充足的,但是捣鼓了好久都不知道是什么原因造成的。最后才发现是文件太多造成的。当然,我遇到的问题跟题主的问题不是同一个问题,只是看到题主的问题才想起来之前遇到的这个问题。当时为了删除这么一大堆的缓存文件,使用`rm -rf xx`,删了好久都没删完,原因是文件数量太多,时间全都耗费在了文件扫描上。。所以后来学聪明了,文件目录规划,按年月日时分秒来划分。比如用户上传文件,我现在按年月日来,创建目录,如`uploads/2018/03/04/`,类似题主的这个,`id+_时间戳`,可以将时间戳提取`年月日时分`,创建路径如`2018/03/04/18/19/id_+时间戳`,这样可能比较好点

要回复问题请先登录注册