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