Filesystems 定制档案格式问题

Filesystems 定制档案格式问题,filesystems,file-format,Filesystems,File Format,我在考虑开发一种自己的文件归档格式,用于私人项目。问题是,我不是在寻找像7z或RAR这样的解决方案,但我想做一些不同的东西,类似于文件系统 查看真实的文件系统,每个文件系统在其体系结构中都有两个共同部分—关于存储在磁盘上的文件的信息和文件的实际数据,如下所示: ---------------------------- METADATA | FILE DATA ---------------------------- 我的问题是——这两个部分怎么可能不重叠?我的

我在考虑开发一种自己的文件归档格式,用于私人项目。问题是,我不是在寻找像7z或RAR这样的解决方案,但我想做一些不同的东西,类似于文件系统

查看真实的文件系统,每个文件系统在其体系结构中都有两个共同部分—关于存储在磁盘上的文件的信息和文件的实际数据,如下所示:

    ----------------------------
       METADATA  |  FILE DATA
    ----------------------------
我的问题是——这两个部分怎么可能不重叠?我的意思是,FAT结构部分朝着文件数据部分增长,而文件数据部分朝着磁盘(分区)的末尾增长。文件系统如何管理这些部分


这就是我一直试图弄明白的大部分时间,任何提示都是非常受欢迎的

大多数文件系统使用具有固定大小的集群、页面或块进行操作。在许多文件系统中,目录(元数据)只是一个特殊的文件,因此它可以像常规数据文件一样增长。在其他文件系统上,某些主元数据块具有固定大小,在文件系统格式化期间预先分配。在这种情况下,在文件占用所有可用空间之前,文件系统可能已满


另一方面,是否有理由重新发明轮子(用于私人需求的自定义文件系统)?存在一些类似于归档的文件内虚拟文件系统的实现,但提供了更多功能。其中一个例子是我们的

大多数文件系统使用具有固定大小的集群、页面或块进行操作。在许多文件系统中,目录(元数据)只是一个特殊的文件,因此它可以像常规数据文件一样增长。在其他文件系统上,某些主元数据块具有固定大小,在文件系统格式化期间预先分配。在这种情况下,在文件占用所有可用空间之前,文件系统可能已满


另一方面,是否有理由重新发明轮子(用于私人需求的自定义文件系统)?存在一些类似于归档的文件内虚拟文件系统的实现,但提供了更多功能。其中一个例子是我们的

您只需要一个包含文件列表、存档名称和/或密码的清单,然后将所有文件列在其中


如果你能把文件缩小,那就更好了

您只需要一个包含文件列表、存档名称和/或密码的清单,然后将所有文件列在其中


如果你能把文件缩小,那就更好了

嗨,尤金,我正在寻找挑战。我还听说过一种方法,元数据部分向磁盘的末尾增长,文件部分向元数据部分增长。你认为这种方法怎么样?谢谢你的好意,但我想尽力想出我自己的解决办法@Paterman是的,您描述的方法听起来也非常有趣和可行(对于固定大小的磁盘)。但在您的特定场景中,它有一个缺点—您需要固定存储的大小。相反,将所有内容作为集群序列将允许您根据需要扩展或缩小存储。我们的solf使用第二种方法,这让我们拥有可变长度的容器。是的,我不想设置存档文件的固定大小。我的另一个想法是将元数据放在文件数据之后,在保存归档文件之前,将整个元数据复制到内存中,让文件覆盖现有部分,并将元数据再次存储在文件中。你觉得怎么样?@Pateman这种方法很难,更糟糕的是,它很容易出错,尤其是在应用程序、操作系统或硬件出错或出现故障的情况下。嗨,Eugene,我正在寻找一个挑战。我还听说过一种方法,元数据部分向磁盘的末尾增长,文件部分向元数据部分增长。你认为这种方法怎么样?谢谢你的好意,但我想尽力想出我自己的解决办法@Paterman是的,您描述的方法听起来也非常有趣和可行(对于固定大小的磁盘)。但在您的特定场景中,它有一个缺点—您需要固定存储的大小。相反,将所有内容作为集群序列将允许您根据需要扩展或缩小存储。我们的solf使用第二种方法,这让我们拥有可变长度的容器。是的,我不想设置存档文件的固定大小。我的另一个想法是将元数据放在文件数据之后,在保存归档文件之前,将整个元数据复制到内存中,让文件覆盖现有部分,并将元数据再次存储在文件中。你认为呢?@Pateman这种方法相当困难,更糟糕的是,它容易出错,尤其是在应用程序、操作系统或硬件出错或出现故障的情况下。