如何将多个tar.gz文件合并为一个.tar.gz?

0 人关注

我想把多个tar.gz文件合并成一个.tar.gz文件 用bash .

我有一个cronjob,它定期创建.sql.tar.gz文件。 将它们结合起来,应该可以大大增加压缩率。

同时,有几百个文件,解压缩每一个文件都会炸毁自由空间。

有什么方法可以直接将内容追加到档案中吗? 比如提取一个文件,然后追加到存档中

#!/bin/bash
tar -czvf all_dbbackups.tar.gz $HOME/dbbackups/

这只是添加了所有的.tar.gz,并没有创建一个新的压缩的。

4 个评论
我不认为有一种方法可以添加到压缩的档案中。
Rob
SO is a programming Q&A platform and this question is not about programming. Questions about operating systems, their utilities, networking and hardware, are off topic here. 我可以在这里问什么话题? .请删除这段话,改为询问,在 superuser.com
@Rob bash不是编程吗?
linux
shell
compression
gzip
tar.gz
pg0
pg0
发布于 2022-11-09
1 个回答
Mark Adler
Mark Adler
发布于 2022-11-09
已采纳
0 人赞同

是的,你可以解压每一个.tar.gz,除了最后的1024字节(这些字节是零,是tar文件的终点),把这些字节连接起来,然后再重新压缩。这一切都可以通过流媒体完成,所以只有最后的结果需要保存在存储器中。

下面是一个在bash中的例子。

#!/bin/bash
rm -f merged.tar.gz
for tgz in "$@"
    len=$(gzip -dc < $tgz | wc -c)
    let cut="$len-1024"
    gzip -dc < $tgz | dd bs=1 count=$cut status=none | gzip >> merged.tar.gz