在Windows NTFS上有一个很好但很多未使用的功能,称为"备用数据流"(ADS),我最近在一个业余爱好开发项目中使用过.
在Mac HFS +上,还有一个类似的好但很多未使用的功能称为"命名分叉".
我正在考虑将这个项目移植到Linux,但我不知道linux上的任何Filesystem是否都有这样的功能?
ADS的问题在于Windows将"丢失"那些ADS流,它将移动到任何非NTFS文件系统.它并不认为这些流是重要的,因此它们通常不会被保留.通过网络共享,烧录到CD,放在USB驱动器等等时,您会发现它们无法访问或消失...
它的长短不一样,除非你对应用程序的关注非常狭窄(总是在NTFS上),否则我会完全避免使用ADS流.
Windows和Linux(以及其他操作系统)上都有支持扩展属性(EA)的文件系统.为OS/2 compat添加了Windows支持,并且没有任何文档化的界面,除了通过备份API的hacky方法(这是Cygwin所做的).EA旨在仅存储小值.在Windows上,每个EA都有一个ASCII名称(而几乎所有其他名称都是Unicode),并且文件中所有EA的组合大小不能大于64k.EA不是文件:您无法打开EA的文件句柄并像普通文件一样阅读它.
备用数据流是NTFS提供的单独功能,允许您在文件内提供备用子文件.每个文件都有一个默认的未命名数据流,除非您指定备用数据流,否则该数据流将自动打开.您可以打开ADS的句柄,并使用单个(Unicode)文件名读取(甚至执行)它,就像普通文件一样.ADS可以与任何磁盘文件一样大.
我所知道的Linux上没有与ADS相似的模拟,但如果数据值很小,您可以在Linux端口上使用EA.
某些文件系统支持扩展属性,特别是XFS和(我认为)JFS; 但是尺寸有限(XFS中为64k).Reiser4支持任意大小的叉子; 但我所知道的任何发行版都不支持它.另一种选择是ZFS,同样不是很有用.
最后,使用目录可能更明智.