AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 722967
Accepted
Manuel Jordan
Manuel Jordan
Asked: 2022-10-30 16:00:53 +0800 CST2022-10-30 16:00:53 +0800 CST 2022-10-30 16:00:53 +0800 CST

为什么 tar 命令通过 'z' 选项使用 gzip 命令?

  • 772

在 Linux Ubuntu 中,关于这些版本的“tar”命令:

tar -tzf  /path/to/filename.tar.gz # Show the content
tar -xzf  /path/to/filename.tar.gz # Extract the content 

观察这两个命令都使用该z选项,并且它们按预期工作。

通过man tar,关于该z选项,它表示:

   -z, --gzip, --gunzip, --ungzip
          Filter the archive through gzip(1).

问题

  • 为什么命令通过选项tar使用命令?gzip'z'

额外问题

关于Filter the archive through gzip(1).部分。

  • 为什么"filter"在上面显示的两个命令中需要它?或 的含义或上下文是filter什么?
tar
  • 1 1 个回答
  • 56 Views

1 个回答

  • Voted
  1. Best Answer
    cas
    2022-10-30T16:46:51+08:002022-10-30T16:46:51+08:00

    归档和压缩是两个不同的东西。

    Windows 上的大多数归档程序(例如zip、7z、rar等)将两者组合成一个程序,既可以进行归档又可以进行压缩 - 因此习惯使用 Windows 的人倾向于认为它们只是不可分割的一件事。

    虽然这些程序中有许多存在于 unix/linux 上,主要是为了与非 unix 系统兼容,但压缩和归档功能由单独的程序完成更为常见。与 MS-DOS/Windows 归档程序不同,unix-native 程序理解并使用 unix 文件元数据,如所有权和权限,有些程序甚至可以正确处理 ACL。

    tar是一个归档程序。它允许将一个或多个文件存储在 .tar 存档中。此存档未压缩。它最初用于将包含多个文件和相关元数据(文件名、所有权、权限等)的流写入磁带。或者到文件,因为任何字节流都可以重定向到文件或通过管道传输到另一个程序。 tar不是唯一的归档程序,还有许多其他程序,包括cpio、ar、afio、pax等等。

    gzip是一个压缩程序。它可以将任何单个文件压缩为自身的压缩版本。或者它可以压缩来自标准输入的数据并将其输出到标准输出(即它可以作为“过滤器”工作)。同样,gzip它不是唯一的压缩/解压缩程序,它是众多程序之一。

    tar可用于gzip在将 .tar 存档写入磁盘之前对其进行压缩。并在读取压缩存档之前对其进行解压缩。

    根据tar您拥有的版本,它可能能够使用其他压缩程序来代替gzip. 例如,GNU tar 具有以下与压缩相关的选项:

    压缩选项

    -a,--auto-compress使用归档后缀来确定压缩程序。

    -I,--use-compress-program=COMMAND通过 COMMAND 过滤数据。它必须接受-d选项,用于解压。该参数可以包含命令行选项。

    -j,--bzip2通过 bzip2(1) 过滤存档。

    -J,--xz通过 xz(1) 过滤存档。

    --lzip通过 lzip(1) 过滤存档。

    --lzma通过 lzma(1) 过滤存档。

    --lzop通过 lzop(1) 过滤存档。

    --no-auto-compress不要使用归档后缀来确定压缩程序。

    -z, --gzip, --gunzip,--ungzip通过 gzip(1) 过滤存档。

    -Z, --compress,--uncompress通过 compress(1) 过滤存档。

    --zstd通过 zstd(1) 过滤存档。

    而且,值得注意的是,其他归档程序也可以与压缩程序一起使用——通过命令行选项,如-zor-Z等​​;或者通过在将压缩器的输出重定向到文件之前将存档器的输出通过管道传输到压缩程序中(或者相反,将解压缩程序的输出通过管道传输到存档器以列出或提取其内容)

    您可以根据需要“混合和匹配”归档和压缩程序,从而使您能够利用归档和/或压缩技术的改进。

    大多数存档器,包括 GNU tar,都通过管道支持这一点,但 GNU tar 还为一些知名程序提供了几个内置选项,并且-I为使用没有自己的内置选项的其他压缩程序提供了一个方便的选项——也许实现新的压缩算法或现有算法的新实现。例如,像pigz,pixz等pbzip2(而不是gzip, xz,bzip2等)这样的程序是这些压缩程序的并行版本,可以利用多核/多线程 CPU 来大大减少压缩或解压缩数据所需的时间。


    “过滤器”是管道中使用的程序的通用术语,用于处理(并可能以某种方式修改)一个程序的输出,然后将其重定向到文件或将其传送到管道中的下一个程序。

    一些程序(如tarwith-z等)可以自己设置过滤管道,不需要用户在shell中进行(例如tar xfz filename.tar.gz与 基本相同gzip -d filename.tar.gz | tar xf -,与tar cfz filename.tar.gz ...基本相同tar cf - ... | gzip > filename.tar.gz)

    编写许多 unix 程序以便它们可以用作管道中的过滤器 - 例如,可以gzip压缩现有文件,也可以压缩其输入流(stdin)并将输出发送到 stdout....cat只需将其标准输入直接传递给标准输出或可选地对行进行编号(使用-n),使行尾和控制以及其他代码可见(使用-v, -E, -A,等选项-t)。

    顺便说一句,因为管道非常有用,人们编写自己的脚本(在 awk 或 perl 或其他)非常普遍,以便他们能够从标准输入获取输入并写入标准输出 - 即人们编写他们的脚本很常见自己的过滤器。

    • 6

相关问题

  • 从 /var/log 提取和归档以 .log 结尾的文件时删除路径名

  • 此 curl/tar 示例中裸破折号的含义

  • tar 目录只发送修改过的文件块

  • 在 Solaris 上;查找、附加到 tar 球并压缩问题

  • bsdtar:如何避免覆盖现有文件信息?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve