Упорядочивание файлов внутри tar, созданного из bash

Любая идея, как архивировать файлы в определенном порядке. Поначалу я знаю, это звучит странно, но выслушай меня. Файл OVA - это, по сути, файл tar, но с определенным порядком. Tar обычно используется для создания файла, но для распознавания OVA такими гипервизорами, как VMware, файлы внутри OVA должны быть упорядочены очень определенным образом. Файл.ovf ДОЛЖЕН быть первым в OVA, а остальные файлы должны отображаться в том порядке, в котором они перечислены в.ovf.

Вот лишь краткое дерево, чтобы помочь объяснить:

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

Это правильный порядок. Когда я пытаюсь создать яйцо с помощью tar, оно работает, но порядок неправильный. Вот как я это делаю. На самом деле это очень просто.

tar -cvf VM.ova *

Я просто погружаюсь в папку, содержащую все содержимое, которое необходимо добавить в OVA, и запускаю команду tar. Пожалуйста, помогите мне правильно заказать эти файлы. Если мы не сможем понять это, виртуальная машина никогда не будет работать с любым HyperVisor. Спасибо!

* ОБНОВИТЬ *

В настоящее время порядок, который tar выполняет по умолчанию: vmdk, iso, mf, ovf

1 ответ

Решение

Проблема в том, что вы просто используете шар, *, чтобы перечислить файлы. Шар расширяется сразу, до того, как tar когда-либо видит это, так что tar действительно видит это:

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

Потому что при нормальных * обстоятельствах глобусы расширяются в C язык сопоставления. Если порядок важен, вы можете перечислить файлы вручную:

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

или используйте расширение скобки, чтобы сохранить набор текста

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

* Глобус может расширяться в другом порядке, если вы возитесь с вашим LC_* Vars, но я делаю некоторые предположения здесь.

Другие вопросы по тегам