【问题标题】:Script to extract only the MaxMind GeoLite2 Country database from gzip containing multiple files从包含多个文件的 gzip 中仅提取 MaxMind GeoLite2 Country 数据库的脚本
【发布时间】:2020-01-04 19:04:20
【问题描述】:

最近 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

【问题讨论】:

  • 又快又脏?如果目录中只有其中一个文件,GeoLite2-Country_*.mmdb.gz 将起作用。
  • @kaylum 我说现在有多个文件,不只是一个,而且数据库名和文件夹名不匹配。
  • 然后编写一个带有for循环的shell脚本。 for 循环将遍历 GeoLite2-Country*.mmdb.gz。然后extract the filename without extensionmmdb 文件名。
  • @kaylum 感谢您的想法,但我对循环不太熟悉。我用文件夹结构更新了问题,您可以尝试编写脚本吗?

标签: linux bash maxmind gunzip


【解决方案1】:
tar -tf /GeoLite2-City.tar.gz | grep mmdb | xargs tar -xf  /GeoLite2-City.tar.gz --strip-components 1 -C /

只需修复源路径和目标路径

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多