1.5K Star 7.7K Fork 1.9K

GVP狮子的魂 / ip2region

 / 详情

如何只生成某个国家的ip xdb文件

待办的
创建于  
2023-01-29 23:41

因为只针对国内用户,其他国家都不需要。这样生成的xdb会小一点。老版本的时候就是自己去除了不需要的ip然后再生成db文件。但是新版,如果修改了ip.merge.txt文件,在执行生成xdb的时候就报错,说是数据不连续。看了文档,有编辑数据的说明,我清空了原来的ip.merge.txt文件,然后执行

./xdb_maker edit --src=./ip.merge.txt
editor>> put 36.132.128.0|36.132.147.255|中国|0|黑龙江省|哈尔滨市|移动

报错,failed to Put(36.132.128.0|36.132.147.255|中国|0|黑龙江省|哈尔滨市|移动): failed to find the related segment

请问,要如何才能只保留某个国家的ip呢?

评论 (9)

osacar 创建了任务

这个处理还是比较方便,逐行处理下 ip.merge.txt,region 信息只保留国家,然后再合并下数据段即可。编辑器需要 ip.merge.txt 有数据,不能清空

我把ip.merge.txt逐行处理了,所有格式都变为:
1.0.0.0|1.0.0.255|澳大利亚|0|0|0|0
36.132.128.0|36.132.147.255|中国|0|0|0|0
1.0.64.0|1.0.79.255|日本|0|0|0|0

都只保留了国家,后面的都变为0,保存为ip.new.txt
处理完之后,执行
./xdb_maker edit --src=./ip.merge.txt
editor>> put_file ../ip.new.txt
跑了一小段时间提示
PutFile(../ip.new.txt): Ok, with 683804 deletes and 158273 additions
执行保存
*editor>> save
all segments saved to ../ip.merge.txt
editor>> quit

最后合并后的ip.merge.txt文件由原来41M变成了7M。
执行生成数据xdb,生成的文件由原来的11.1M变成3.5M
验证正确性,结果如下:
./xdb_maker bench --db=./ip2region.xdb --src=../ip.merge.txt
Bench finished, {count: 791565, failed: 0, took: 11.61856989s}

请问,我上面操作是否正确?

社区群有人做过只保留 ISP

@osacar
1、ip.new.txt 只保留国家,变成如下例如:

36.132.128.0|36.132.147.255|中国

也就是不用的信息去掉,这样会将数据减到最小

2、直接使用 ip.new.txt 作为输入生成 xdb 即可,不需要通过 editor 操作

感谢老大指导,已经重新生成了一份。
再次谢谢!

欢迎加入技术群,将你的劳动成果分享给社区

输入图片说明

麻烦问下,这个是啥情况?

IP数据段必须保持连续,查看公众号的 xdb 生成文档,如果过程觉得很抽象,使用 xdb 编辑器去修改。

好的,谢谢

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(3)
5187 lionsoul 1578914315
C
1
https://gitee.com/lionsoul/ip2region.git
git@gitee.com:lionsoul/ip2region.git
lionsoul
ip2region
ip2region

搜索帮助