tar文件的格式

tar文件的格式tar格式的设计最初是为了在磁带上归档一堆文件。一个tar文件由一个个文件块构成,每个文件块都是一个原本文件的封装。文件块顺序摆放,在末尾加上一个全0的512字节标志。但是实际上这个标志不一定存在(例如我拿到的一个tar文件就么有这512个0),因此打开tar文件的时候不能依赖这个标志,而要依赖文件结尾来判断tar文件的结束。每个文件块由一个个block(512字节)构成,这也

大家好,欢迎来到IT知识分享网。tar文件的格式"

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

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信