压缩文件夹,但不压缩特定文件类型,而是将其包括在gz文件中

ankit7540

我在tar和Pigz中使用tar来压缩文件夹并保存备份。此文件夹的大小约为250 GB或更大。该文件夹具有多种内容,包括许多子文件夹中的大量文本和日志文件,ISO和zip文件。完全压缩此文件夹大约需要1个小时(有时甚至更多)。目前,我在脚本中使用它。

tar -cf - <data_folder> | pigz -1 > <output_file>.tar.$

我想通过排除对ISO和zip文件的压缩来减少压缩时间。我希望它们(ISO和zip文件)像这样(未压缩)包含在gzip文件中。

我的问题是:是否可以根据类型有选择地压缩文件,并且仍将未压缩的文件包括在gzip输出中?如何尝试呢?

巴南金

不,你不能。至少不是直接。

tar不做任何压缩。它仅读取(虚拟)文件系统的一部分,并从中生成一个内聚流。然后,通常将此流传gzip递到压缩工具/库,例如/ libz。压缩部分看不到或什至不了解单个文件。它只是压缩生成的流tar因此,您不能在当前方法中添加选择性压缩。

您可以做的是通过分别压缩每个文件,然后将其添加到tar存档中,逐步构建tar存档。这样,您可以选择将未压缩的iso映像添加(例如)到存档中。但是请注意,tar存档本身不会被压缩。因此,解压缩文件后,还必须在适当的情况下分别解压缩每个文件。

通过压缩isos和zip文件,您实际上损失了多少时间?就像tar | pigz > <file>流处理一样,我想您不会浪费那么多时间。在将下一个块压缩时,在构建流时,有一些块被写入磁盘。它是并行发生的。

也许您可以优化策略:

您可以将所有iso和zip文件放入专用目录,然后分三步构建归档文件:tar&压缩其余文件,添加iso目录,添加zip目录。生成的档案仍然需要冗长的提取过程,以解压缩外部档案,然后解压缩和解压缩内部档案。但是,这比解压缩每个单独的文件更可行。

或者,您可以调整命令:它必须是文件系统的tar归档文件,还是可以dd用来备份整个分区的文件?备份整个分区的优点是可以连续从磁盘读取数据,这比使用文件系统要快。我敢肯定pigz,如果iso和zip文件是您的问题,那么您可以调整以使用更大的块,这应该可以加快速度。另外,您可以mbuffer在将结果写入磁盘之前进一步添加一些缓冲(例如),以进一步优化媒体访问。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章