【问题标题】:How to archive and extract a .tar.gz file如何归档和提取 .tar.gz 文件
【发布时间】:2014-01-24 17:38:23
【问题描述】:

一个简单的问题。在 x86 Solaris 10 上,我尝试了以下方法来压缩文件的文件夹(数据)。

tar -cvf /path/to/Data/* | gzip > /path/to/archive/Data.tar.gz

现在,我可以使用以下方法列出文件名及其大小:

gunzip -c Data.tar.gz

但是,当我尝试解压缩(用于验证)Data.tar.gz 时:

gzip -d Data.tar.gz
tar -xvf Data.tar

我收到“校验和错误”

有人可以建议在 Solaris 10 中压缩和提取文件的正确方法吗?谢谢

【问题讨论】:

    标签: gzip tar solaris-10


    【解决方案1】:

    您可以分两步归档

    $ tar cvf archive.tar file* 
    $ gzip archive.tar
    

    (它将创建archive.tar.gz,同时删除archive.tar。)

    提取也分两步:

    $ gunzip archive.tar.gz
    

    (它将创建archive.tar并删除archive.tar.gz。)

    $ tar xvf archive.tar
    

    列出 .gz 文件中的文件:

    gzip -l archive.tar.gz
    

    或者,您可以使用 7zip 将所有文件放在一起并压缩它们。

    7z a archive.7z Makefile* (to create archive)
    7z l archive.7z           (to list files inside the archive)
    7z e archive.7z           (to extract)
    

    【讨论】:

      【解决方案2】:

      因为你是管道(你应该),你需要使用- 来指示标准输入或标准输出。例如

      tar -cvf - data/* | gzip > data.tar.gz
      gzip -dc data.tar.gz | tar -xvf -
      

      【讨论】:

      • 当我尝试将其解压回来时仍然收到以下错误:“tar:目录校验和错误”。请指教,谢谢
      • 以上对我有用。您是否正在对 .tar.gz 文件进行处理?命令是否在不同的机器上运行?
      【解决方案3】:

      您必须将 tar cvf 的输出定向到标准输出,才能使用 gzip 读取它:

      tar cvf - <path> | gzip > <file>
      

      一般也推荐使用相对路径名。如果您想在另一个系统上解压缩它,使用以 / 开头的路径可能会导致问题。 gnu tar 会将绝对路径转换为相对路径。 gnu tar 也接受压缩选项,因此不再需要 gzip:

      gnutar cvfz <file> <path>
      

      此外,您还可以执行以下操作:

      tar cvf - <path> | ssh remotehost (cd <another dir>; gzip > <file>)
      

      这将在压缩之前更改目录。

      Solaris tar 的手册页,有更多示例。参见 man tar(8)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-02
        • 1970-01-01
        • 1970-01-01
        • 2016-10-11
        • 2013-11-27
        • 2013-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多