从大量文件创建一组固定大小的压缩文件

从大量文件创建一组固定大小的压缩文件

我有一组大量文件要存档在 Linux 服务器中。我需要将这些文件压缩成一组 1GB 的压缩文件。

我正在使用 gzip 来压缩文件,但在真正压缩文件之前我不知道压缩文件夹的最终大小。我使用下面的命令来获取压缩文件的最终大小,但它并不是很有效,因为我需要不断添加新文件并压缩,直到获得所需的最终大小。

tar -czf - /path/to/compressed-directory | wc -c

有没有有效的方法来做到这一点?或者我应该考虑压缩单个文件,然后使用单个压缩文件创建最终存档?

答案1

除了反复试验之外,没有其他方法可以确定将下一个文件添加到存档中是否会使其超过 1GB 限制。此外,压缩后的文件也可能大于 1GB,在这种情况下您将无法执行您想要的操作。

我建议您将split所有文件的 tar.gz 存档分解为 1GB 的块。每一块都无法单独提取。相反,您需要在另一端将它们重新组合回一个大的 .tar.gz 中以进行提取。

例如:

tar -czf - /path/to/whatever | split -b 1024m - prefix

其中prefix是生成的分割文件的文件名的前导字符。在另一端重新组合并提取:

cat prefix* | tar -xzf -

相关内容