【问题标题】:Untar multipart tarball on Windows在 Windows 上解压缩多部分压缩包
【发布时间】:2010-10-15 07:13:43
【问题描述】:

我有一系列名为 filename.part0.tar、filename.part1.tar、... filename.part8.tar 的文件。

我猜 tar 在归档时可以创建多个卷,但我似乎找不到在 Windows 上解压缩它们的方法。我尝试使用 7zip(GUI 和命令行)、WinRAR、tar114(不能在 64 位 Windows 上运行)、WinZip 和 ZenTar(我找到的一个小实用程序)解压它们。

所有程序通过part0文件运行,解压3个rar文件,然后退出报错。其他部分文件均无法识别为 .tar、.rar、.zip、.gz。

我尝试使用 DOS 复制命令将它们连接起来,但这不起作用,可能是因为 part0part6part8每个都是 100Mb,而 part7 是 53Mb,因此可能是最后一部分。我已经为串联文件尝试了几种不同的逻辑顺序,但没有任何乐趣。

除了安装 Linux、寻找实时发行版或追踪为我留下这些文件的人之外,我该如何解压这些文件?

【问题讨论】:

    标签: windows tar archive


    【解决方案1】:

    安装 7-zip。右键单击第一个 tar。在上下文菜单中,转到“7zip -> 在此处提取”。

    像魅力一样工作,不需要命令行功夫:)

    编辑: 我现在才注意到您提到已经尝试过 7zip。如果您尝试通过“打开方式”-> 7zip 来“打开”tar,它可能会犹豫 - 他们用于打开文件的命令行有点不正统,因此您必须通过 7zip 而不是通过构建的文件关联系统进行关联- 进入窗户。但是,如果您尝试右键单击->“7-zip”->“在此处提取”,那应该可以工作-我自己测试了解决方案(尽管在32位Windows机器上-没有64位可用)

    【讨论】:

    • 谢谢!是的,我确实通过上下文菜单和命令行尝试了 7zip,但它没有帮助。我什至卸载了 7zip 的 64 位版本并安装了 32 位版本,心想,这到底是怎么回事。那也没用。
    • 7zip 在文件名方面非常挑剔。第一个文件必须以 .tar.001 或 .tar.01 结尾。下一个文件是 .tar.002 等等。这与 Linux $split 创建的完全不同。以0开头,不加“.”!
    【解决方案2】:

    1) 下载 gzip http://www.gzip.org/ for windows 并解压
    2) gzip -c 文件名.part0.tar > foo.gz
    gzip -c 文件名.part1.tar >> foo.gz
    ...
    gzip -c 文件名.part8.tar >> foo.gz
    3) 解压 foo.gz

    为我工作

    【讨论】:

      【解决方案3】:

      如上所述,我遇到了同样的问题并遇到了这个旧线程。对我来说,在安装 Siebel VM 时,这是一个严重的 RTFM 案例。这些说明直接来自手册:

      cat \
      OVM_EL5U3_X86_ORACLE11G_SIEBEL811ENU_SIA21111_PVM.tgz.1of3 \
      OVM_EL5U3_X86_ORACLE11G_SIEBEL811ENU_SIA21111_PVM.tgz.2of3 \
      OVM_EL5U3_X86_ORACLE11G_SIEBEL811ENU_SIA21111_PVM.tgz.3of3 \
       | tar xzf –
      

      为我工作!

      【讨论】:

      • 不!在没有安装 Cygwin 的情况下,cat 通常不是 WINDOWS 上任何内部或外部命令的名称。在 Windows 上可以通过二进制副本连接文件:copy /b file1 file2 file3 destination.
      • copy 的语法是 copy /b file1+file2+file3 destination。无论如何,它对我不起作用,只有第一个文件的内容没有去皮。
      【解决方案4】:

      tar -M 开关应该在 Windows 上为您服务(我使用的是 tar.exe)。

      tar --help 说:

      -M, --multi-volume             create/list/extract multi-volume archive
      

      【讨论】:

      • 谢谢!我为 32 位 Windows 找到了 tar.exe 的副本,并按照您的建议使用 -M 开关运行它,但它不会将该文件识别为多卷集,而只是从第一个中提取相同的文件夹部分。我开始认为文件已损坏。
      【解决方案5】:

      我找到了这个帖子,因为我对这些文件有同样的问题。是的,与您拥有的完全相同的文件。以下是正确的顺序:042358617(即从 part0 开始,然后是 part4,等等)

      按该顺序连接,您将获得一个可以解压缩的压缩包。 (我不在 Windows 上,所以我无法建议使用什么应用程序。)请注意,其中包含的 19 个项目中,有 3 个是 zip 文件,一些非归档实用程序将报告为已损坏。其他应用程序将允许您提取 99% 的内容。再说一次,我不在 Windows 上,所以你必须自己试验。

      享受吧! ;)

      【讨论】:

        【解决方案6】:

        这对我来说适用于多卷 tar 存档(编号为 .tar.1、.tar.2 等),甚至允许 --list 或 --get 其中的特定文件夹或文件:

        #!/bin/bash
        TAR=/usr/bin/tar
        ARCHIVE=bkup-01Jun
        RPATH=home/user
        RDEST=restore/
        EXCLUDE=.*
        mkdir -p $RDEST
        $TAR vf $ARCHIVE.tar.1 -F 'echo '$ARCHIVE'.tar.${TAR_VOLUME} >&${TAR_FD}' -C $RDEST --get $RPATH --exclude "$EXCLUDE"
        

        复制到一个脚本文件,然后修改参数即可:

        • TAR=tar 二进制文件的位置
        • ARCHIVE=存档基本名称(不带 .tar.multivolumenumber)
        • RPATH=要恢复的路径(留空表示完全恢复)
        • RDEST=恢复目标文件夹(相对或绝对路径)
        • EXCLUDE=要排除的文件(使用模式匹配)

        对我来说有趣的是你真的不要使用 -M 选项,因为这只会问你问题(插入下一卷等)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-23
          • 2019-01-29
          • 1970-01-01
          • 2013-10-21
          • 2012-06-11
          相关资源
          最近更新 更多