知道如何按特定顺序压缩文件。我知道一开始听起来很奇怪,但请听我说完。 OVA 文件本质上是一个 tar 文件,但具有特定的顺序。 Tar 通常用于创建文件,但为了让 OVA 被 VMware 等 HyperVisors 识别,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
最佳答案
问题是您只是使用了一个 glob,*
,来列出文件。 glob 在 tar
看到它之前立即展开,所以 tar 真正看到的是:
tar -cvf VM.ova VM.iso VM.mf VM.ovf VM.vmdk
因为在正常*情况下,glob 在 C
归类语言环境中按词法扩展。如果顺序很重要,您可以手动列出文件:
tar -cvf VM.ova VM.ovf VM.mf VM.vmdk VM.iso
或者使用大括号扩展来节省一些输入
tar -cvf VM.ova VM.{ovf,mf,vmdk,iso}
*如果您弄乱了您的 LC_*
变量,则 glob 可能会以不同的顺序扩展,但我在这里做了一些假设。
关于linux - 在 bash 创建的 tar 中排序文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21118311/