7

知道如何按特定顺序 tar 文件。我知道一开始听起来很奇怪,但请听我说完。OVA 文件本质上是一个 tar 文件,但具有特定的顺序。Tar 通常用于创建文件,但为了使 OVA 能够被 VMware 等 HyperVisor 识别,必须以非常特定的方式对 OVA 中的文件进行排序。.ovf 文件必须在 OVA 中排在第一位,其他文件必须按照它们在 .ovf 中列出的顺序出现

这里只是一个快速的树来帮助解释:

VM.ova--
       |
       |--VM.ovf
       |--VM.mf
       |--VM.vmdk
       |--VM.iso

这是正确的顺序。当我尝试使用 tar 创建一个 ova 时,它可以工作,但是顺序错误。这是我的做法。这实际上是非常基本的。

tar -cvf VM.ova *

我只是潜入包含需要添加到 OVA 的所有内容的文件夹并运行 tar 命令。请帮我正确订购这些文件。如果我们无法弄清楚这一点,VM 将永远无法与任何 HyperVisor 一起使用。谢谢!

* 更新 *

目前 tar 默认执行的顺序是:vmdk、iso、mf、ovf

4

1 回答 1

11

问题是您只是使用 glob *, 来列出文件。glob 在tar看到它之前立即膨胀,所以 tar 真正看到的是:

tar -cvf VM.ova VM.iso VM.mf VM.ovf VM.vmdk

C因为在正常*情况下,glob 在排序规则语言环境中按词法扩展。如果顺序很重要,您可以手动列出文件:

tar -cvf VM.ova VM.ovf VM.mf VM.vmdk VM.iso

或使用大括号扩展来节省一些打字

tar -cvf VM.ova VM.{ovf,mf,vmdk,iso}

*如果你弄乱了你的变量,glob 可能会以不同的顺序扩展LC_*,但我在这里做了一些假设。

于 2014-01-14T16:19:34.187 回答