Ошибка, когда `tar``.zip` в Linux
Я закрепил каталог на моем Mac OSX с командной строкой zip
и -r
. я scp
.zip
к кластеру, работающему в Linux.
Если я попытаюсь распаковать .zip
с помощью
tar -vxzf foo.zip
на моей машине это работает. Но одна и та же команда не работает в кластере. Я получаю ошибку
gzip: stdin has more than one entry--rest ignored
tar: Child returned status 2
tar: Error is not recoverable: exiting now
Как я могу решить эту проблему?
Ответы
Ответ 1
Команда tar
предназначена для распаковки архивов TAR, а не файлов zip. Вы должны либо использовать команду unzip
вместо tar
:
unzip foo.zip
Или создайте архив tar.gz
на стороне Mac вместо zip файла
tar -cvzf foo.tar.gz ....
который можно распаковать с помощью существующей команды tar
на стороне Linux.
Ответ 2
Эта ошибка:
gzip: stdin has more than one entry--rest ignored
означает, что tar
пытается распаковать zip-архив, как если бы это был архив gzip, который не всегда работает (см. " Созданные файлы zip может быть сжат gzip только в том случае, если у них есть один член, сжатый с помощью метода" дефляции" для получения дополнительной информации).
Вместо распаковки zip-архива следует использовать unzip foo.zip
.
Ответ 3
Стандартный GNU tar
не обрабатывает файлы .zip
напрямую. Я удивлен, что MacOSX справляется с этим.
Проблема в том, что tar
знает, как обрабатывать файлы gzip
, которые являются файлами формата не Info-Zip (.zip
). Файлы Info-Zip предназначены для обработки как архивирования, так и сжатия, а tar
- нет. (Большинство реализаций tar
теперь фильтруют файл tar
с помощью соответствующего компрессора/декомпрессора на основе параметров командной строки.)
Используйте unzip
вместо кластера. Программа предназначена для обработки файлов .zip
. Вам вообще не нужно tar
.