Упорядочивание файлов внутри 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, но я делаю некоторые предположения здесь.