如果我制作一个.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
/ pigz
、bzip2
/ pbzip2
、xz
/等压缩器的全部要点pixz
是它们可以在流上工作,您只需将它们插入管道中即可。
答案2
如果您的问题可以改写为“在压缩档案中包含压缩档案可以吗?”,那么答案是“是”。
这可能不是最方便的(正如您所注意到的,您必须运行 tar 多个文件才能解压所有内容),并且对已压缩的数据应用压缩可能不会产生额外的大小减小,但它会起作用。