从 .tar.gz 中提取前 n 个字节并在单个命令中输出为 .tar.gz

从 .tar.gz 中提取前 n 个字节并在单个命令中输出为 .tar.gz

我有一个 .tar.gz 作为输入,想要提取它的前 128 MiB 并在单个命令中作为 .tar.gz 输出。我试过:

sudo tar xzOf input.tar.gz | sudo dd of=output bs=1M count=128 iflag=fullblock | sudo tar -cfz final.tar.gz -T -

这显然不起作用。我怎样才能做到这一点。

答案1

不要尝试提取存档的内容(这在这里不起作用 - 无法跟踪各个文件的元数据),而是对其进行解压缩、截断并重新压缩。如果您有一个能够执行此操作的版本head

gzip -dc input.tar.gz | head -c128M | gzip -c > final.tar.gz

或者您可以dd在命令中使用:

gzip -dc input.tar.gz | dd bs=1M count=128 iflag=fullblock | gzip -c > final.tar.gz

相关内容