我从一个客户端收到了一个巨大的 .tar.gz 文件,其中包含大约 800 mb 的图像文件(未压缩时)。我们托管公司的 ftp 速度非常慢,因此在本地提取所有文件并通过 ftp 发送它们是不切实际的。我能够将 .tar.gz 文件 ftp 到我们的托管站点,但是当我 ssh 进入我的目录并尝试使用解压缩时,它给了我这个错误:
[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 文件中的所有文件?
键入
man tar
以获取更多信息,但此命令应该可以解决问题:为了进一步解释,将
tar
所有文件收集到一个包中,community_images.tar
. gzip 程序应用了压缩,因此进行了gz
扩展。所以这个命令做了几件事:f
: 这必须是命令的最后一个标志,并且 tar文件必须紧随其后。它告诉 tar 压缩文件的名称和路径。z
: 告诉 tar 使用 g z ip解压缩存档x
: tar 可以收集文件或扩展它们。x
后者。v
: 让 tar 说了很多话。详细输出显示所有正在提取的文件。要提取到自定义文件夹,请添加
-C
带有您选择的文件夹名称的选项:如果您希望将文件提取到特定目标,您可以添加 确保首先创建目录,在这种情况下:~/Pictures/Community
-C /destination/path/
例子:
如果您考虑告诉tar以 e X tract a File ,您可以轻松记住它
注意:请记住,您可以使用 +term 在手册页中搜索以查找,
?
然后转到您要查找的术语的下一个或上一个实例。n
N
在某些时候
tar
升级为自动解压缩。你现在需要的是:同样的解释也适用:
f
: 这必须是命令的最后一个标志,并且 tar文件必须紧随其后。它告诉 tar 压缩文件的名称和路径。x
: e x tract 文件。请注意命令标志缺少连字符。这是因为大多数版本的 tar 都允许 gnu 和 bsd 样式选项(简单地说,gnu 需要连字符,bsd 不需要)。
记住所有的标志
tar
可能很乏味。强制性 XKCD:因此,我用 Python 制作了自己的小脚本来做到这一点。快速、肮脏、
cp
类似用法:像这样使用它:
另请参阅用于解压缩 zip 档案的类似脚本。
快速回答:
[注意]:
-v
详细列出已处理的文件。-z
通过 gzip 过滤存档。-f
使用存档文件或设备 ARCHIVE。-x
从存档中提取文件。-j
bzip2.-xf
archive.tar # 从archive.tar
.如果您无法
.tar.gz
使用尝试使用提取
您也可以在第一步中执行此操作:
然后你有文件:community_images.tar
第二步是:
并且 *.tar 文件将被提取。
tar xvf 文件.tar.gz
任何远程现代版本的 tar 都应该自动检测到存档是 gzip 压缩的,并为您添加“z”。