我从客户端收到一个巨大的 .tar.gz 文件,其中包含约 800 mb 的图像文件(未压缩时)。我们托管公司的 ftp 非常慢,因此在本地提取所有文件并通过 ftp 发送它们并不实际。我能够将 .tar.gz 文件通过 ftp 传输到我们的托管站点,但当我 ssh 进入我的目录并尝试使用 unzip 时,它给出了此错误:
[esthers@clients locations]$ unzip community_images.tar.gz
Archive: community_images.tar.gz
End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive.
note: community_images.tar.gz may be a plain executable, not an archive
unzip: cannot find zipfile directory in one of community_images.tar.gz or community_images.tar.gz.zip, and cannot find community_images.tar.gz.ZIP, period.
我需要使用什么命令来提取 .tar.gz 文件中的所有文件?
答案1
输入man tar
更多信息,但是这个命令应该可以解决问题:
tar -xvzf community_images.tar.gz
进一步解释一下,tar
将所有文件收集到一个包中community_images.tar
。gzip 程序应用了压缩,因此使用了gz
扩展名。因此该命令做了几件事:
f
:这必须是命令的最后一个标志,并且 tarFile 必须紧跟其后。它告诉 tar 压缩文件的名称和路径。z
:告诉 tar 使用 g 解压缩档案是知识产权x
:tar 可以收集文件或 eX跟踪他们。x
是后者。v
:使 tar 说话很多。五erbose 输出显示所有正在提取的文件。
提取成C自定义文件夹,添加-C
您选择的文件夹名称的选项:
tar -xvzf community_images.tar.gz -C some_custom_folder_name
答案2
如果您希望将文件提取到特定目标,您可以添加-C /destination/path/
确保先创建目录,在本例中为:~/Pictures/Community
例子:
mkdir ~/Pictures/Community
tar xf community_images.tar.gz -C /home/emmys/Pictures/Community/
你可以很容易地记住它,如果你考虑告诉柏油到 eX道F伊莱
笔记:请记住,您可以在手册页中使用?
+term 进行搜索,然后使用n
和N
转到您要查找的术语的下一个或上一个实例。
答案3
在某些时候tar
升级为自动解压。您现在需要的是:
tar xf community_images.tar.gz
同样的解释也适用:
f
:这必须是命令的最后一个标志,并且 tarFile 必须紧跟其后。它告诉 tar 压缩文件的名称和路径。x
:电子X整理文件。
请注意,命令标志中没有连字符。这是因为大多数版本的 tar 都允许 gnu 和 bsd 样式选项(简单地说,gnu 需要连字符,而 bsd 不需要)。
答案4
快速回答:
tar -xvf <.tar file> or <.tar.xz file>
tar -xzvf <.tar.gz file>
tar -xjvf <.tar.bz2 file>
[笔记]:
-v
详细列出已处理的文件。-z
通过 gzip 过滤档案。-f
使用存档文件或设备 ARCHIVE。-x
从档案中提取文件。-j
bzip2。- tar
-xf
archive.tar # 从中提取所有文件archive.tar
。