`tar` 在 Linux 上的 `.zip` 时出错
Error when `tar` a `.zip` on Linux
我使用 zip
命令行和 -r
选项在 Mac OSX 上压缩了一个目录。我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
我该如何解决这个问题?
这个错误:
gzip: stdin has more than one entry--rest ignored
意味着 tar
正在尝试解压缩您的 zip 存档,就好像它是 gzip 存档一样,但这并不总是有效(请参阅“Files created by zip can be uncompressed by gzip only if they have a single member compressed with the 'deflation' method" 了解更多信息)。
您应该使用 unzip foo.zip
来解压缩 zip 存档。
tar
命令用于解压缩 TAR 存档,而不是 zip 文件。您应该使用 unzip
命令而不是 tar
:
unzip foo.zip
或者在 Mac 端创建一个 tar.gz
存档而不是 zip 文件
tar -cvzf foo.tar.gz ....
您可以在 Linux 端使用现有的 tar
命令解压。
标准 GNU tar
不直接处理 .zip
文件。我很惊讶 MacOSX 可以处理它。
问题是 tar
知道如何处理 gzip
文件,这些文件 不是 Zip (.zip
) 格式文件。 Info-Zip 文件旨在处理归档和压缩,而 tar
则不能。 (大多数 tar
实施现在将根据命令行选项使用适当的 compressor/decompressor 过滤 tar
文件。)
改为在您的集群上使用 unzip
。这是设计用于处理 .zip
文件的程序。你根本不需要 tar
。
我使用 zip
命令行和 -r
选项在 Mac OSX 上压缩了一个目录。我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
我该如何解决这个问题?
这个错误:
gzip: stdin has more than one entry--rest ignored
意味着 tar
正在尝试解压缩您的 zip 存档,就好像它是 gzip 存档一样,但这并不总是有效(请参阅“Files created by zip can be uncompressed by gzip only if they have a single member compressed with the 'deflation' method" 了解更多信息)。
您应该使用 unzip foo.zip
来解压缩 zip 存档。
tar
命令用于解压缩 TAR 存档,而不是 zip 文件。您应该使用 unzip
命令而不是 tar
:
unzip foo.zip
或者在 Mac 端创建一个 tar.gz
存档而不是 zip 文件
tar -cvzf foo.tar.gz ....
您可以在 Linux 端使用现有的 tar
命令解压。
标准 GNU tar
不直接处理 .zip
文件。我很惊讶 MacOSX 可以处理它。
问题是 tar
知道如何处理 gzip
文件,这些文件 不是 Zip (.zip
) 格式文件。 Info-Zip 文件旨在处理归档和压缩,而 tar
则不能。 (大多数 tar
实施现在将根据命令行选项使用适当的 compressor/decompressor 过滤 tar
文件。)
改为在您的集群上使用 unzip
。这是设计用于处理 .zip
文件的程序。你根本不需要 tar
。