【发布时间】:2023-03-14 21:40:02
【问题描述】:
我有一个学校项目,这意味着制作一个在 unix 系统中像 tar 一样工作的 c 程序。我有一些问题希望有人向我解释:
-
档案的维度。我了解到(通过浏览互联网)档案有定义数量的块,每个块 512 字节。所以标题有 512 字节,然后是文件的内容(如果它只是一个要归档的文件),以 512 字节的块组织,然后是另外 2 个 512 字节的块。
例如:假设我有一个 0 字节的 txt 文件要存档。这应该意味着要使用多个 512*3 字节。为什么当我在 unix 中使用 tar 函数并单击属性时它有 10.240 字节?我认为它增加了一些 0 (NULL) 字节,但我不知道在哪里、为什么以及多少......
标头校验和。据我所知,这应该是存档的大小。当我使用 hexdump -C 检查它时,它看起来像一个接近存档实际大小(单击属性时)的数字。例如 11200 或 11205 或类似的东西,如果我存档一个 0 字节的 txt 文件。这个大小是八进制还是十进制?我敢打赌,它是八进制的,因为你放在标题中的所有信息都必须是八进制的。此时我的第二个问题是,从原来的 10240 字节大小中增加了什么?
Header Mode.假设我有一个664的文件,格式文件会是0,那么我应该把header 0664放进去。为什么,在一个正宗的存档上打印3开头还有 0 (000064)?
【问题讨论】:
-
我已经检查过了,但我不明白什么“校验和是通过将标头记录的无符号字节值的总和与作为 ascii 空格的八个校验和字节(十进制值 32)" 表示 ...
-
不知道为什么它们会是十进制值 32,它是空间的 ascii,如果校验和很短并且可能长达 8 个字节,它们似乎是字节 0。尝试阅读此gnu.org/software/tar/manual/html_node/Standard.html