我有一组大量文件要存档在 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 -