大家好,欢迎来到IT知识分享网。
tar格式的设计最初是为了在磁带上归档一堆文件。
一个tar文件由一个个文件块构成,每个文件块都是一个原本文件的封装。
文件块顺序摆放,在末尾加上一个全0的512字节标志。但是实际上这个标志不一定存在(例如我拿到的一个tar文件就么有这512个0),因此打开tar文件的时候不能依赖这个标志,而要依赖文件结尾来判断tar文件的结束。
每个文件块由一个个block(512字节)构成,这也是结束标志是512字节的原因所在。
每个文件块的开头第一个block是一个header,是tar格式的封装信息。其余block是将原文件按照512字节分块之后,依次存储下来的,末尾补0以对其到512字节。如果文件刚好是512字节的倍数,那就不用补0了,因此文件大小和tar打包之后占用的block数的计算是
Block数 = (文件字节数 + 511)/ 512
header的结构如下:
struct header { char name[100]; char mode[8]; char uid[8]; char gid[8]; char size[12]; char mtime[12]; char chksum[8]; char linkflag; char linkname[100]; char magic[8]; char uname[32]; char gname[32]; char devmajor[8]; char devminor[8]; char prefix[155] char padding[12]; };
所有字节都被解释为了ascii字符,因此每个字段以 ‘\0’结尾。
其中
size和checksum是8进制数。
mtime使用 “Unix时间”。
linkflag是’5’表示这个文件是目录,那么这个文件块将没有数据,下一个block就是下一个文件块。其余情况还有“符号链接”等等,这里暂时不深入讨论,可以参考:http://www.moon-soft.com/program/FORMAT/comm/tar.htm
magic是一个字符串”ustar”,用于标示这是一个tar文件(头)。
以上是header中比较有用的部分,其余暂时我还用不到,因不理会。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11900.html