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

我们有从特定机器进入文件夹的日志数据(XML数据)。 所以例如日志数据就像这样进入一个平面文件夹结构。

\\Machine1\logs\*.xml

这个文件夹在任何时候都可以有50-300k的文件。 一旦文件被放入这个文件夹,它不会被更新。 这些文件有一些关于logging内容的信息(有关处理内容的信息)和yyyymmddhhmmss.xml。

进入这个文件被保存在3-6周左右,然后最终被清除(这通常是由我无法控制的其他进程)。

我们面临的挑战是将这些数据归档数年。 我打算创build\\ArchiveServer\Machine1\logs\YYYY\mm\DD\*.xml的文件夹结构。 这将允许我们在某一天更容易地获取数据(如果需要的话),以及我们最终将1M +文件放在一个目录中的位置。

我试图找出一个很好的方法来pipe理旧的结构和新的结构之间的这种同步/合并,不断地扩展到足以处理我们最终将会减less太多文件的数量。

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

不幸的是,这样做的问题是必须在\\Archiveserver上执行一个目录列表,因为更多的数据被复制到归档文件夹中,这最终会变慢。 对于只有200k的文件,大约需要30秒的时间在目标文件夹上做列表。 我担心,一旦达到500k-1Mlogging,将需要更长的时间。

有没有更好的方式来完成这将扩大与我将处理的文件数量(这是在Windows中)?