Aks*_*ert 13 tar gzip checksum integrity
我运行命令:
tar -cf myArchive.tar myDirectory/
gzip myArchive.tar
Run Code Online (Sandbox Code Playgroud)
然后我将文件复制到许多不可靠的介质上,然后我使用以下方法解压缩它:
tar -xzf myArchive.tar.gz
Run Code Online (Sandbox Code Playgroud)
我压缩了 tar-ball 的事实,是否会以任何方式保证解压内容的完整性,或者至少是 CRC?
cha*_*aos 16
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
Run Code Online (Sandbox Code Playgroud)
从gzip
联机帮助页:
使用前两种格式(表示gzip 或 zip)时,gunzip 会检查 32 位 CRC。
小智 5
tar
没有完整性检查。例子:
$ echo JJJJJJJJJJJJJJJJJJ > b
$ tar cvf a.tar b
$ sed -i s/JJJJJJJJJJJJJJJJJJ/tttttttttttttttttt/g a.tar
$ tar xvf a.tar
$ cat b
tttttttttttttttttt
Run Code Online (Sandbox Code Playgroud)
看,a.tar
archive的内容变了,所以文件b
内容完全不一样了,但是tar并没有注意到这一点。对于任何 tar 都是如此,包括具有两种 tar 格式的 tar-1.28(最新)--format=gnu --format=posix
。该pax
命令(替代 tar 阅读器)pax -r < a.tar
也不会注意到存档更改。