![从 .tar.gz 中提取前 n 个字节并在单个命令中输出为 .tar.gz](https://linux22.com/image/216282/%E4%BB%8E%20.tar.gz%20%E4%B8%AD%E6%8F%90%E5%8F%96%E5%89%8D%20n%20%E4%B8%AA%E5%AD%97%E8%8A%82%E5%B9%B6%E5%9C%A8%E5%8D%95%E4%B8%AA%E5%91%BD%E4%BB%A4%E4%B8%AD%E8%BE%93%E5%87%BA%E4%B8%BA%20.tar.gz.png)
我有一个 .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