
我運行命令:
tar -cf myArchive.tar myDirectory/
gzip myArchive.tar
然後我將文件複製到許多不可靠的媒體上,然後我使用以下方法解壓縮它:
tar -xzf myArchive.tar.gz
事實上,我壓縮了 tar 包,這是否會以任何方式保證解壓縮內容的完整性,或至少保證 CRC?
答案1
tar
它本身不會寫下校驗和以後比較。如果您gzip
存檔tar
,您就可以擁有該功能。
tar
使用compress
.如果您-Z
在建立存檔時使用該標誌,則在讀取或寫入存檔時tar
將使用該程式。compress
從gzip
線上說明頁:
標準壓縮格式的設計不允許一致性檢查。
但是,您可以使用該-z
參數。然後tar
透過 讀取和寫入存檔gzip
。並gzip
寫入一個crc校驗和。若要顯示該校驗和,請使用該指令:
$ gzip -lv archive.tar.gz
method crc date time compressed uncompressed ratio uncompressed_name
defla 3f641c33 Sep 25 14:01 24270 122880 80.3% archive.tar
從gzip
線上說明頁:
當使用前兩種格式時(gzip 或 zip 的意思是),gunzip 檢查 32 位 CRC。
答案2
答案3
tar
沒有完整性檢查。例子:
$ echo JJJJJJJJJJJJJJJJJJ > b
$ tar cvf a.tar b
$ sed -i s/JJJJJJJJJJJJJJJJJJ/tttttttttttttttttt/g a.tar
$ tar xvf a.tar
$ cat b
tttttttttttttttttt
看,歸檔的內容a.tar
發生了變化,因此文件的b
內容完全不同,但 tar 沒有註意到這一點。這對於任何 tar 都是如此,包括具有兩種 tar 格式的 tar-1.28(最新)--format=gnu --format=posix
。該pax
命令(替代 tar 閱讀器)pax -r < a.tar
也不會注意到存檔更改。
答案4
PKZip 軟體包 (win/dos) 附帶一個名為 PKZipFix 的程序,該程序可以從損壞的存檔中恢復檔案。我過去使用過這個實用程序,它可以從無法解壓縮的中等損壞的存檔中恢復檔案。