我有以下存档目录:
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