tar:排除 gzip 文件,并且不要尝试对其进行 gunzip

gio*_*o79 3 tar gzip

我想在提取 tar 文件时跳过一个大的 gzip 文件,但是每次 tar 开始对其进行压缩以查看内部时。

即使我只是尝试查看 tar 内部,似乎也开始对其进行压缩,例如:

tar -tvf my.tar.gz --exclude="huge_mysql_file.gz"
Run Code Online (Sandbox Code Playgroud)

任何提示如何完全跳过该文件?当 tar 到达那个 gz 文件时,我看到 gzip 正在运行。

mir*_*173 7

my.tar.gz是一个gzip 压缩的 tar文件。tar是“磁带存档”的缩写。因此,my.tar.gz必须先解压缩该文件,gzip -d然后才能读取tar文件。不能随机访问 gzip 文件的内容。我真的不知道 gzip 文件格式,但至少没有选择gzip这样做。您可以看到tar用于解压缩my.tar.gz文件的“gzip -d” gziptar不解压缩文件,huge_mysql_file.gz但它必须读取(并忽略)该文件,huge_mysql_file.gz因为这是由管道提供给 gunzip。

如果 tar 文件没有被 gzipped 并且你像这样列出它的内容

tar -tvf my.tar --exclude="huge_mysql_file.gz"
Run Code Online (Sandbox Code Playgroud)

只有huge_mysql_file.gz在档案中的头必须被读取才能知道它的大小。然后 tar 可以跳过该文件而不读取它并继续处理以下文件。