Unix 可以将多个bz2档案合并为一个吗?

Unix 可以将多个bz2档案合并为一个吗?,unix,compression,bzip2,Unix,Compression,Bzip2,我有几个(27)巨大(每个数GB)的bz2归档文件,我需要将它们合并到一个bz2归档文件中。对我来说,解压这些文件,然后从刚刚解压的文件中创建一个新的归档文件不是一个选项,因为经过压缩,所有27个文件加起来大约100GB,解压后大约5-6TB(是的,这是TB lol) 这可以用某种脚本来完成吗,或者是否有其他压缩格式可以实现(更简单)?你应该把问题转过来-你不应该尝试解压然后再重新压缩文件,只需对所有单独的文件进行tar存档-tar是单独文件的理想容器 tar cf tarofbzfiles.t

我有几个(27)巨大(每个数GB)的bz2归档文件,我需要将它们合并到一个bz2归档文件中。对我来说,解压这些文件,然后从刚刚解压的文件中创建一个新的归档文件不是一个选项,因为经过压缩,所有27个文件加起来大约100GB,解压后大约5-6TB(是的,这是TB lol)


这可以用某种脚本来完成吗,或者是否有其他压缩格式可以实现(更简单)?

你应该把问题转过来-你不应该尝试解压然后再重新压缩文件,只需对所有单独的文件进行tar存档-tar是单独文件的理想容器

tar cf tarofbzfiles.tar *.bz2

您可以简单地将多个bz2文件连接到单个bz2文件中,如下所示:

$cat file1.bz2 file2.bz2 file3.bz2>结果文件.bz2


bzip2
和其他实用程序(如
lbzip2
)将能够按预期解压缩生成的文件。

如果您愿意消耗几天的CPU,这里有一个解决方案,它具有现代UNIX(R)操作系统的神奇管道功能:

bzip2 -dc file*.bz2 | bzip2 >resulting_file.bz2
。。。实际上,抓取lbzip2版本2.0,并在多核上执行相同的操作,但lbzip2除外:

lbzip2 -dc file*.bz2 | lbzip2 >resulting_file.bz2

您可以使用
bzip2-dc
的内置
bzcat
速记缩短@lacos的答案,并像往常一样将答案导入
bzip2
。不比@lacos更正确,但有点圆滑;)


事实上,我真的需要一个包含27个档案所有内容的档案,哈哈。不幸的是,我很确定一个包含27个档案的档案不能满足我的目的(什么类型的文件是.bz2存档?如果它是一个tar文件,那么可以将它们连接起来。这需要一个脚本将每个存档的解压缩链接到它们自己的管道/fifo中,该管道/fifo用于一组tar-a命令中,所有这些命令都归结为通过bzip2管道传输的fifo。我认为每个文件都是一个(巨大的)XML文件。我目前正在尝试一个名为bzcat的命令,如下所示:
bzcat*.bz2>newfile.bz2
。我在一个多小时前启动了它,所以我们将在很久以后看到它的运行情况。:)bzcat*.bz2 | bzip2-c>newfile.bz2-如果你不重新-bzip2文件,你就不会得到压缩!!事实上,它是有效的!从man bzip2:
bunzip2将正确解压缩两个或多个压缩文件的串联文件。结果是相应未压缩文件的串联。还支持连接压缩文件的完整性测试(-t)。
bzcat file*.bz2 | bzip2 >resulting_file.bz2