改进在特定目录结构中管理大型文件的方法

改进在特定目录结构中管理大型文件的方法

我们有来自特定机器的日志数据(XML 数据)存放在文件夹中。例如,日志数据存放在平面文件夹结构中,如下所示。

\\Machine1\logs\*.xml

此文件夹可随时容纳 50-300k 个文件。一旦将文件放入此文件夹,它就不会更新。这些文件包含一些有关已记录内容的信息(有关处理的内容/位置的信息)以及附加在其末尾的 yyyymmddhhmmss.xml。

进入此处的文件将保存大约 3 至 6 周,然后最终被清除(这通常由我无法控制的其他过程完成)。

挑战在于存档几年的数据。我计划创建一个文件夹结构\\ArchiveServer\Machine1\logs\YYYY\mm\DD\*.xml。这将使我们能够更轻松地获取某一天的数据(如果需要),并且我们不会在单个目录中拥有 1M 以上的文件。

我正在尝试找出一种好的方法来连续管理新旧结构之间的同步/合并,使其能够扩展到足以处理我们最终拥有的文件数量,而不会减慢太多速度。

在 Python 中,我列出了\\machine1\logs\*.xml源目录并抓取了该文件列表,然后执行递归目录列表以获取\\ArchiveServer\Machine1\logs目标中所有文件的列表,比较源列表和目标列表,如果源列表中的任何文件不在目标列表中,则我将它们复制到目标(存档)文件夹。

不幸的是,这存在一个问题,即必须在目录上进行列表,而\\Archiveserver随着越来越多的数据被复制到存档文件夹中,这最终会变慢。对于只有 200k 个文件,机器大约需要 30 秒才能在目标文件夹中进行列表。我担心一旦达到 500k-1M 条记录,所需的时间就会大大延长。

有没有更好的方法来实现这一点,并且可以根据我要处理的文件数量进行扩展(这是在 Windows 中)?

相关内容