【问题标题】:Unzip - Warning and Mapname解压缩 - 警告和地图名称
【发布时间】:2014-01-24 00:55:31
【问题描述】:

我有一个使用共享链接(不是公共链接)和 curl 从 Dropbox 下载的文件夹。它以压缩文件夹的形式下载。我需要在 bash shell 脚本中使用 unzip 来解压这个文件夹。每当解压缩文件夹时,我都会收到以下错误:

warning:  stripped absolute path spec from /
mapname:  conversion of  failed

为了确保 curl 不是一个奇怪的问题,我直接从 Dropbox 下载了该文件夹并再次尝试。我得到了同样的错误。所有文件和子目录都出现了,它们的完整性似乎没有任何问题。使用 GUI 解压缩任一文件夹不会导致错误消息。

我运行 unzip -l 并注意到一个奇怪的第一个条目:

     Length   Method    Size  Ratio   Date   Time   CRC-32    Name
    --------  ------  ------- -----   ----   ----   ------    ----
           0  Defl:N        2   0%  01-23-14 19:38  00000000  /

我相信是这个空目录导致了问题。我的问题是,有没有办法忽略这个空目录或抑制错误消息(我试过 -qq 没有运气)?或者,我做错了什么/遗漏了什么?

我在Mac OSX 10.9.1Ubuntu Linux (Version Unknown) 上对此进行了测试,结果相同。

编辑:我还用jar xf 对其进行了测试,它运行良好,没有任何错误。运行jar xvf 表明它created: /。我仍然认为是这个空的、未命名的目录导致了这个问题,但我似乎无法正确使用我的语法,以便 unzip 会忽略它。我只会使用 jar,但我需要能够指定输出目录。

【问题讨论】:

  • 您可以尝试按名称显式提取存档中的其他文件,例如G。 unzip /path/to/filename.zip filename.ext file2.ext 从存档中提取 filename.extfile2.ext
  • 谢谢!我确实考虑过这一点,但是一旦 shell 脚本完成,它将被移交,我将无法维护它。文件夹的内容很可能会发生变化。它实际上以现在的方式运行良好,错误/警告只是烦人,可能会警告最终用户。
  • 您可以随时使用2> /dev/null 禁止警告。此外,您可以使用-x 作为另一种选择来排除有问题的孩子。
  • 我忘记了 /dev/null。我尝试了 -x 选项,但问题子项是一个空目录“/”,我似乎无法让它工作。不过,这可能只是我的语法问题。你会怎么做?
  • 将所有输出发送到 null 是否安全?如果发生合法错误怎么办?

标签: bash curl warnings unzip directory-structure


【解决方案1】:

尝试从命令行解压缩 Dropbox 自动生成的 zip,我也发现了这条消息:

warning:  stripped absolute path spec from /
mapname:  conversion of  failed

我将 Dropbox 的 zip 与 普通 zip 进行了比较。

不同之处在于,在解压缩时,Dropbox 中的第一个位置出现了一种文件,例如/

我只是将选项-x / 添加到试图排除它的解压缩命令中,它对我有用。

【讨论】:

  • -x / 应该放在解压缩命令的末尾,但如果使用了 -d 参数,则应该放在它之前。例如。解压缩 INPUT.zip -x / -d OUTPUTDIR
【解决方案2】:

在我看来,根本问题是存档,而不是您的命令。

默认情况下,我们将相对路径存储在 ZIP 文件中。示例:

$ zip tmp.zip /home/mcoolive/*txt
adding: home/mcoolive/file1.txt (deflated 73%)
adding: home/mcoolive/file2.txt (deflated 76%)

默认情况下,解压会重新创建当前目录中的所有文件和子目录。

在您的情况下,存档包含绝对路径。这是邪恶的。因此,您的客户端将绝对路径转换为带有警告的相对路径。

【讨论】:

  • 使用某些版本的解压缩,它可以提取所有文件并发出警告说根(第一个/)被忽略。如果你真的需要root,你可以“chroot”来隔离你的进程。如果可以的话,更喜欢带有相对路径的 ZIP 存档。
猜你喜欢
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
  • 2014-01-22
  • 1970-01-01
  • 2020-08-12
  • 2015-12-26
  • 2023-03-29
相关资源
最近更新 更多