Я пытался извлечь из большинства zip-файлов большинство форматов (gzip и т. Д.) tar
, И когда я достаточно расстроился из-за этого в Google, я не нашел способа извлечь zip-файл tar
и использовал только рекомендации zip
или unzip
. На самом деле, моя система Linux даже не имеет zip
утилиты, а только unzip
(оставляя меня удивляться, почему это основной рекомендуемый вариант). Конечно, unzip
сработало, решив мою проблему, но почему нельзя tar
извлечь zip-файлы? Возможно, я должен вместо этого спросить, в чем разница между zip и поддерживаемыми методами сжатия tar
?
28
bsdtar
можно распаковывать.zip
архивы: Pzip
по умолчанию, потому что его лицензирование не совместимо с GPLОтветы:
Философия UNIX - иметь маленькие инструменты. Один инструмент делает только одну вещь, но это особенно хорошо.
tar
Инструмент просто объединение нескольких файлов в один файл без сжатия.gzip
Инструмент просто сжимает один файл.Если вы хотите иметь оба, вы просто объединяете оба инструмента в
.tar.gz
файл.zip
Инструмент совершенно разные вещи. Он берет кучу файлов и объединяет их в один сжатый файл. С совершенно разными алгоритмами.Если вы хотите, чтобы один инструмент управлял ими, используйте все
atool
. Он будет поддерживать целую кучу различных форматов, просто определяя формат и вызывая правильный инструмент.источник
gzip
алгоритм сжатия тот же самый, который используетсяzip
. Разница в том, чтоgzip
он предназначен для сжатия любого потока байтов, включая.tar
файл, в то время какzip
, полученный и вдохновленный PKZIP, сжимает и архивирует за один шаг (и в таком порядке).Короче говоря: инструмент tar GNU не передает через zip / unzip, так как никому нет до этого дела.
Длинная история, оригинальный размер:
tar
изначально предназначался не для распаковки и сжатия файлов, а для архивирования нескольких файлов в один большой файл. Поскольку люди не только хотели архивировать свои файлы, но и сжимать их, они простоtar
передают выходные данные через любой компрессор, который принимает входной поток данных и сбрасывает результаты в файл. Прибыль!Теперь, чтобы сделать такую задачу максимально безболезненной,
tar
решил внутренне передать файлы, сгенерированные инструментам сжатия, таким как gzip, lzma и т. Д., Которые были активированы специальными флагами для каждого формата во время работыtar
. Вот почему, когда вы пытаетесь извлечь поврежденный файл,tar
вы видите ошибку инструмента, а неtar
s:Таким образом, это не то,
tar
что не распаковывает zip-файлы, просто уtar
него нет возможности передать его через правильный инструмент, так как на самом деле никто не удосужился его реализовать, и zip уже выполняет функцию архивирования файла tar. У формата меньше оснований для поддержки tar.Теперь есть все-в-одном инструменты, которые сжимают / распаковывают все, что вы на них бросаете, опять же, вам нужны правильные инструменты, чтобы реально поддерживать это. Если у вас их нет, инструмент потерпит неудачу.
источник
afio
).file-roller
...tar
Файл представляет собой формат файла сам по себе предназначен для ленточных архивов. Этот формат затем может быть сжат с использованием (например)gzip
илиbzip2
форматов сжатия. Когда вы извлекаете сжатый tar-файл, вы фактически распаковываете его, а затем извлекаете исходные файлы из несжатогоtar
файла.Когда вы извлекаете
zip
файл, в нем нетtar
файла, только все ваши исходные файлы. Поэтому нет никаких причин дляtar
участия в процессе вообще.Вы также можете сжимать файлы, используя
gzip
илиbzip2
сами, как вы можете создаватьzip
файлы (безtar
участия). Когда вы распаковываете эти файлы, вы используетеgunzip
илиbunzip2
нетtar
.источник
Поскольку ответ «Некоторые вещи есть, и мы должны их принять» тоже не устраивает меня, я просто немного покопался (всегда хорошо узнать что-то новое, не так ли?).
Таким образом, похоже, что проблема заключается в том, куда пошли инструменты и какова их цель.
Вместо того, чтобы перефразировать то, что я нашел, и сделать излишне мутные воды (запутывание меня бесит), взгляните на эту статью: http://www.differencebetween.net/technology/difference-between-zip-and-gzip/
Я полагаю, что tar мог бы иметь встроенную поддержку zip, но методологии, видимо, принципиально разные. Или, возможно, они подумали, зачем кому-то использовать этот инструмент архивирования для управления файлами из другого инструмента архивации и сжатия (или, возможно, между двумя исходными кодерами был какой-то спор, и был подан запретительный приказ, запрещающий почтовым индексам пересекать границу приложения). да я шучу)
источник