我运行命令:
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 的程序,它可以从损坏的档案中恢复文件。我以前用过这个实用程序,它可以从无法解压的中度损坏的档案中恢复文件。