如何将多个文件 bzip2 压缩为一个存档文件

如何将多个文件 bzip2 压缩为一个存档文件

我正在阅读 bzip2 的离线文档,有人告诉我可以使用 bzip2 将多个文件压缩成一个档案,如下所示:

bzip2 finalArchive.bz2 file1 file2 file2

但是当我尝试这个时我得到

无法打开输入文件 finalArchive.bz2:没有此文件或目录。

我将这 3 个文件分别压缩为 file1.gz2、file2.gz2 和 file3.gz2,并且我也知道可以将cat它们压缩为一个文件,但我希望能够使用一个命令来完成此操作。

我可以使用 zip 来做到这一点:

zip finalArchive.zip file1 file2 file3

我得到了预期的finalArchive.zip文件

答案1

bzip2和都gzip适用于单个文件。压缩该文件时,将删除未压缩的版本。提取时则相反。

要将多个文件放入bzip2存档中,请先使用tar将它们合并为一个文件,然后压缩该文件。或者,由于是tar“zip 感知”,您可以-j在创建 tar 存档时使用标志使用 bzip2 压缩,所有这些都作为一个步骤完成。

答案2

最常见的 Unix 压缩实用程序(gzip、、)均对单个文件进行操作,而制作多文件存档的标准方法是将它们用 进行bzip2合并。xztar

您收到Can't open input file finalArchive.bz2: No such file or directory.错误是因为bzip2认为您想要压缩一个名为的文件finalArchive.bz2,但该文件当然不存在。

为了完成您想要的操作,请使用以下命令:

tar -cjf finalArchive.tar.bz2 file1 file2 file3

其中j选项指定tar要使用bzip2什么来压缩tar档案。请参阅tar手册中的相关章节了解更多信息。

如果您使用的是没有压缩支持的非常旧的版本tar,则需要手动执行压缩步骤:

tar -cf - file1 file2 file3 | bzip2 -c > finalArchive.tar.bz2

答案3

bzip2 和 gzip 都使用文件连接。这意味着bzip2 files将导致files.bz2。可以连接多个文件,例如:

bzip2 -c file1 > files.bz2
bzip2 -c file2 >> files.bz2

但是,这几乎与执行的操作相同,您可以使用以下命令cat file1 file2 > files 检查连接的未压缩结果,例如:stdoutbzcat
bzcat files.bz2

因此files.bz2最终仍将是一个文件。为了清楚起见,如果您提取如下files.bz2内容:

bunzip files.bz2

结果将只是一个名为 的文件files,其内容将是 和 的file1连接file2

tar多个文件需要用如下命令进行打包,tar -cvjf files.tbz file1 file2
其中此处-j是命令中的等效包装器标志,tar用于添加 bzip 压缩。

答案4

删除 finalArchive.zip 只需输入文件列表。示例截图如下:

在此处输入图片描述

相关内容