使用 tar、gzip 和 pigz 进行递归压缩安全吗?

使用 tar、gzip 和 pigz 进行递归压缩安全吗?

如果我制作一个.tar.gz过孔

tar czvf - ./myfiles/ | pigz -9 -p 16 > ./mybackup.tar.gz,

我可以安全地解压缩已经 gzip 了文件./myfiles/an_old_backup.tar.gz 之内目录./myfiles通过

gzip -d mybackup.tar.gz
tar -xvf mybackup.tar
cd myfiles
gzip -d an_old_backup.tar.gz
tar -xvf an_old_backup.tar

?可以安全地进行这种递归压缩吗无限期

答案1

tar czvf - ./myfiles/ | pigz -9 -p 16 > ./mybackup.tar.gz

相当于

tar cvf - ./myfiles/ | gzip | pigz -9 -p 16 > ./mybackup.tar.gz

您获得的tar.gz不是 a tar.gz.gz,而是压缩两次的存档,而不是压缩文件的压缩存档。

那是毫无意义的。压缩输出不可压缩。压缩两次不会获得任何显着的空间增益。为了提取,您还需要解压两次

gunzip < mybackup.tar.gz | gunzip | tar xf -

或者

gunzip < mybackup.tar.gz | tar xzf -

如果您想使用普通压缩pigz代替,只需执行以下操作:gzip

tar cvf - ./myfiles/ | pigz -9 -p 16 > ./mybackup.tar.gz

你可以用它来解压tar zxvf mybackup.tar.gz

另请注意,您永远不必解压缩文件tar.gz并将未压缩的版本存储在磁盘上。gzip/ pigzbzip2/ pbzip2xz/等压缩器的全部要点pixz是它们可以在流上工作,您只需将它们插入管道中即可。

答案2

如果您的问题可以改写为“在压缩档案中包含压缩档案可以吗?”,那么答案是“是”。

这可能不是最方便的(正如您所注意到的,您必须运行 tar 多个文件才能解压所有内容),并且对已压缩的数据应用压缩可能不会产生额外的大小减小,但它会起作用。

相关内容