什么是tar文件
tar文件是以一定的方式,将多文件合成一个单文件,并不对文件进行压缩处理。tar最初的设计目的是将文件备份到磁带上(tape archive),因而得名tar。
tar包的结构
文件头 – 文件内容 – 文件头 – 文件内容 —— 文件末尾
type Header struct {
name [100]byte mode [8]byte owner [8]byte group [8]byte size [12]byte mtime [12]byte checkSum [8]byte fileType byte linkName [100]byte magic [6]byte version [2]byte uname [32]byte gname [32]byte devmajor [8]byte devminor [8]byte prefix [155]byte padding [12]byte }
以上是Tar中保存文件信息的数据结构,其后跟着的就是文件的内容。
- 其中,文件大小,修改时间,checksum都是存储的对应的八进制字符串,字符串最后一个字符为空格字符
- checksum的计算方法为出去checksum字段其他所有的512-8共504个字节的Ascii码相加的值再加上256
- 文件内容以512字节为一个块进行分割,最后一个块不足部分以0补齐
- 多个文件合成的tar,存储格式为:tar的头结构,文件体,tar头,文件体……。当所有文件都存储完成后,在文件末尾补上一个全零的tar结构(即1024个零值)
- 所有的tar文件大小都是512的倍数
- 一个空的文件,打包成tar后,为512*3个字节
新建一个空的tar,用010 Editor打开,如下:
检测tar文件格式的方法:
注意:在windows下面,不支持uid、uname等,有的甚至不支持magic,这样就比较麻烦了。
参照:https://www.cnblogs.com/stephen-init/archive/2012/10/09/2716779.html
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232902.html原文链接:https://javaforall.net