如何从 tbz 中提取单个文件

如何从 tbz 中提取单个文件

我有以下存档目录:

itunes20140618.tbz

我想从中提取单个文件,名为:

itunes20140618/video

我该怎么做?

到目前为止,我正在做

$ bzip2 -d /tmp/itunes20140618.tbz 

但它似乎创建了一个包含所有内容的 tar 目录。我如何提取单个视频文件?

目前,如果我通过 tar 提取一个文件,大约需要 1 分钟,然后在完成读取 tar 存档时再“挂起”20 分钟。有什么想法如何改进这个吗?

答案1

tar -xvjf itunes20140618.tbz itunes20140618/video

对于这种情况应该可以做到这一点,但如果您需要更多帮助,请执行以下操作:

info tar

要提取特定的存档成员,请提供其确切的成员名称作为参数,如 打印的那样--list (-t)。如果您错误地删除了之前放入存档中的文件之一collection.tar (例如blues),您可以将其从存档中提取,而无需更改存档的结构。其内容将与blues您删除的原始文件相同。

首先,确保您位于该practice目录中,并列出该目录中的文件。现在,删除文件 ,blues并再次列出目录中的文件。

blues您现在可以从存档文件“collection.tar”中提取成员,如下所示:

 $ tar --extract --file=collection.tar blues

如果再次列出该目录中的文件,您将看到该文件 blues已恢复,并具有其原始权限、数据修改时间和所有者。 (这些参数将与您最初将文件放入存档时所具有的参数相同;但是,您在从文件系统中删除文件之前可能所做的任何更改都将_不会_对存档成员进行。) 存档文件collection.tar与解压之前的文件相同blues。您可以通过运行tar 来确认这一点--list (-t)

答案2

.zip像、.rar或 这样的存档.7z由许多文件捆绑在一起并压缩而成。.tar存档由许多文件捆绑在一起组成,但 tar 格式不包含任何压缩。.gz.bz2.xz文件是单个压缩文件。.tar.gz.tar.bz2等是压缩存档;.tbz是偶尔用来代替 的后缀.tar.bz2,就像 how.tgz有时用来代替 一样.tar.gz

bzip2 -d /tmp/itunes20140618.tbz解压缩文件。您将得到未压缩的 tar 存档。bzip2不创建 tar:它解压缩提供给它的内容,并且由于给定的是压缩的 tar,因此输出是未压缩的 tar。您可以使用 解压生成的文件tar -xf /tmp/itunes20140618.tar。要仅提取一个文件,即tar -xf /tmp/itunes20140618.tar itunes20140618/video.

Linux、FreeBSD、MINIX3 和 OSX 上最新版本的 tar 会自动检测压缩档案,因此您可以首先调用 tar,而不必担心档案上使用的压缩:

tar xf itunes20140618.tbz itunes20140618/video

旧版本的 tar 以及当今的许多系统,例如 OpenBSD、Solaris 和带 BusyBox 的 Linux,至少可以bzip2在幕后调用,即使您必须使用选项明确地告诉它们-j

tar -xjf itunes20140618.tbz itunes20140618/video

相关内容