我每天都在下载.COM区域文件。它是世界上所有.COM域名及其主要名称服务器的列表。
区域文件样本:
DAYTONOHIOJOBS NS NS1.HOSTINGNET
DAYTONOHIOJOBS NS NS2.HOSTINGNET
DAYTONOHIOMAP NS NS1.HOSTINGNET
DAYTONOHIOMAP NS NS2.HOSTINGNET
DAYTONOHIONEWS NS NS1.HOSTINGNET
DAYTONOHIONEWS NS NS2.HOSTINGNET
要保存在磁盘空间中,您可以看到.COM已从域名中删除(无论如何都是.COM)。 名称服务器也是如此(如果它以.COM结尾,它已被删除)。
此区域文件大约为270,000,000行,大约为9 GB。
我的目标是监控特定的名称服务器。每天我都想要一个包含该特定名称服务器的所有域的列表,但也列出了具有该名称服务器的所有新域名(新的如下:昨天该域名还没有该名称服务器)。
我编写了一个perl脚本来打开并加载“昨天”数据库,然后打开“今天”数据库并循环和比较。但这需要数小时和大量的记忆。
最好的方法是什么?
答案 0 :(得分:1)
根据我所知道的情况,我将如何做到这一点:
让脚本读取第一个文件。对于与感兴趣的名称服务器对应的每一行,将该条目添加到散列映射。
让脚本读取第二个文件。对于与感兴趣的名称服务器对应的每一行,检查该条目是否在hashmap中。如果不是,那就是新的。如果是,则保持不变 - 将其从hashmap中删除。
最后,仍然删除了仍留在hashmap中的所有条目。
这确实假设具有此特定nameservers域的hashmap适合内存,但在合理的机器上和合理的名称服务器上,这似乎是一个合理的假设......
答案 1 :(得分:1)
您今天可以grep
和yestarday文件中的名称服务器行,并比较两个结果。 (grep
- 命令行unix工具)
您可以保留压缩文件(gzip)并使用zgrep
作为初始grep。