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

kha*_*rim 0 tar backup compression gzip recursive

如果我制作一个.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
Run Code Online (Sandbox Code Playgroud)

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

Sté*_*las 5

tar czvf - ./myfiles/ | pigz -9 -p 16 > ./mybackup.tar.gz
Run Code Online (Sandbox Code Playgroud)

相当于

tar cvf - ./myfiles/ | gzip | pigz -9 -p 16 > ./mybackup.tar.gz
Run Code Online (Sandbox Code Playgroud)

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

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

gunzip < mybackup.tar.gz | gunzip | tar xf -
Run Code Online (Sandbox Code Playgroud)

或者

gunzip < mybackup.tar.gz | tar xzf -
Run Code Online (Sandbox Code Playgroud)

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

tar cvf - ./myfiles/ | pigz -9 -p 16 > ./mybackup.tar.gz
Run Code Online (Sandbox Code Playgroud)

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

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