13

Я использую GNU tar. Он может автоматически определять тип сжатия при сжатии / распаковке файлов. Но мне нужно распаковать архив из stdin и тип сжатия неизвестен. Я заметил, что tar может дать мне правильное предложение вроде:

tar: Archive is compressed. Use -z option

Но я хочу, чтобы tar автоматически использовал эту опцию сжатия, не прося меня ввести этот аргумент. Как я могу это сделать? Почему бы просто не распаковать tar, поскольку он уже знает тип сжатия?

Спасибо!

2 ответа2

9

Это не тот ответ, который вы хотите услышать, но он не поддерживается GNU tar согласно его руководству:

Единственный случай, когда вам нужно указать опцию распаковки при чтении архива, это при чтении из канала или с ленточного накопителя, который не поддерживает произвольный доступ. Однако в этом случае GNU tar покажет, какую опцию вам следует использовать. Например:

$ cat archive.tar.gz | tar tf -
tar: Archive is compressed.  Use -z option
tar: Error is not recoverable: exiting now

Если вы видите такую диагностику, просто добавьте предложенную опцию к вызову GNU tar:

$ cat archive.tar.gz | tar tzf -

- 8.1.1 Создание и чтение сжатых архивов

6

Наконец, я понял, что причина, по которой я не могу позволить tar обнаруживать и распаковывать архив из stdin, заключается в том, что я использую GNU tar. BSD tar может сделать это автоматически без проблем. Поэтому я решил использовать bsdtar вместо tar в моем сценарии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .