用于从包含多个文件的gzip中仅提取MaxMind GeoLite2国家数据库的脚本

问题描述 投票:0回答:1

最近,MaxMind更改了其下载策略,并且旧的简单格式不再可用。新文件格式如下所示:GeoLite2-Country_20191231.tar.gz,在内部,我们有一个同名文件夹,其中包含两个其他文件。

尽管可以从链接中删除date参数,但似乎下载的文件仍将包含日期。

现在,问题在于以编程方式从具有该变量名称的gzip文件中提取GeoLite2-Country.mmdb

我的旧脚本中存在的解压缩部分是这样的:

gunzip -c "$1"GeoLite2-Country.mmdb.gz > "$1"GeoLite2-Country.mmdb

问题是如何针对新情况修改以上部分。或者,也许有人知道解决相同问题的另一种方法。预先感谢。

文件夹结构:

-+ Geolite2-Country_YYYYMMDD.tar.gz:
 |-+ Geolite2-Country_YYYYMMDD
   |- licence.txt
   |- copyright.txt
   |- Geolite2-Country.mmdb

我需要的是gzip文件当前文件夹中的Geolite2-Country.mmdb

linux bash maxmind gunzip
1个回答
0
投票

您可以尝试以下代码段:

for i in *.tar.gz; do
    date=$(echo "$i" | sed 's/GeoLite2-Country_\([0-9]*\)\.tar\.gz/\1/');
    tar zxf "$i" GeoLite2-Country_$date/Geolite2-Country.mmdb
    mv GeoLite2-Country_$date/Geolite2-Country.mmdb Geolite2-Country_$date.mmdb
    rmdir GeoLite2-Country_$date
done

它通过在生成的mmdb中添加日期来处理多个输入文件。

© www.soinside.com 2019 - 2024. All rights reserved.