Backup
使用 tar、gzip 和 pigz 進行遞歸壓縮是否安全?
如果我做一個
.tar.gz
通過
tar czvf - ./myfiles/ | pigz -9 -p 16 > ./mybackup.tar.gz
,我可以通過
./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
? 並且可以無限安全地進行這種遞歸壓縮嗎?
如果您的問題可以改寫為“可以在壓縮檔案中包含壓縮檔案嗎?”,那麼答案是“是”。
這可能不是最方便的(正如您所注意到的,您必須執行 tar 幾個文件才能將所有內容解包),並且對已經壓縮的數據應用壓縮可能不會額外減少大小,但一切都會奏效.
tar czvf - ./myfiles/ | pigz -9 -p 16 > ./mybackup.tar.gz
相當於
tar cvf - ./myfiles/ | gzip | pigz -9 -p 16 > ./mybackup.tar.gz
您獲得的不是 a
tar.gz
而是 atar.gz.gz
,一個壓縮兩次的存檔,而不是壓縮文件的壓縮存檔。那是沒有意義的。壓縮輸出不可壓縮。通過壓縮兩次,您不會獲得任何顯著的空間增益。而對於提取,您還需要解壓縮兩次
gunzip < mybackup.tar.gz | gunzip | tar xf -
或者
gunzip < mybackup.tar.gz | tar xzf -
如果您想使用
pigz
而不是 plaingzip
進行壓縮,只需執行以下操作:tar cvf - ./myfiles/ | pigz -9 -p 16 > ./mybackup.tar.gz
你可以用它解壓縮
tar zxvf mybackup.tar.gz
另請注意,您永遠不必解壓縮
tar.gz
文件並將未壓縮的版本儲存在磁碟上。gzip
/pigz
,bzip2
/pbzip2
,xz
/之類的壓縮器的全部意義pixz
在於它們可以在流上工作,您只需將它們插入管道中即可。