Короче говоря: инструмент tar GNU не передает через zip / unzip, так как никому нет до этого дела.
Длинная история, оригинальный размер:
tarизначально предназначался не для распаковки и сжатия файлов, а для архивирования нескольких файлов в один большой файл. Поскольку люди не только хотели архивировать свои файлы, но и сжимать их, они просто tarпередают выходные данные через любой компрессор, который принимает входной поток данных и сбрасывает результаты в файл. Прибыль!
Теперь, чтобы сделать такую задачу максимально безболезненной, tarрешил внутренне передать файлы, сгенерированные инструментам сжатия, таким как gzip, lzma и т. Д., Которые были активированы специальными флагами для каждого формата во время работы tar. Вот почему, когда вы пытаетесь извлечь поврежденный файл, tarвы видите ошибку инструмента, а не tars:
$ tar zxf damaged.tar.gz
gzip: damaged.tar.gz: unexpected end of file
Таким образом, это не то, tarчто не распаковывает zip-файлы, просто у tarнего нет возможности передать его через правильный инструмент, так как на самом деле никто не удосужился его реализовать, и zip уже выполняет функцию архивирования файла tar. У формата меньше оснований для поддержки tar.
Теперь есть все-в-одном инструменты, которые сжимают / распаковывают все, что вы на них бросаете, опять же, вам нужны правильные инструменты, чтобы реально поддерживать это. Если у вас их нет, инструмент потерпит неудачу.
bsdtarможно распаковывать.zipархивы: P