在Windows NTFS上有一个很好但很多未使用的功能 我最近在一个业余爱好开发项目中使用的“备用数据流”(ADS)。
在Mac HFS +上,还有一个同样不错但很常用的功能称为“命名分叉”。
我正在考虑将这个项目移植到Linux,但我不知道Linux上的任何Filesystem是否都有这样的功能?
答案 0 :(得分:13)
ADS的问题在于Windows将“丢失”这些ADS流,它将移动到任何非NTFS文件系统。它并不认为这些流是重要的,因此它们通常不会被保留。通过网络共享,烧录到CD,放在USB驱动器等等时,您会发现它们无法访问或消失...
除非您对应用程序的关注非常狭窄(总是在NTFS上),否则它的长短不一,我会完全避免使用ADS流。
答案 1 :(得分:11)
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。
答案 2 :(得分:7)
某些文件系统支持扩展属性,特别是XFS和(我认为)JFS;但是尺寸有限(XFS中为64k)。 Reiser4支持任意大小的叉子;但我所知道的任何发行版都不支持它。另一种选择是ZFS,同样不是很有用。
最后,使用目录可能更明智。
答案 3 :(得分:0)
大多数Linux文件系统都有extended attributes
。我不熟悉NTFS流,所以我无法比较这两者。大多数文件系统需要使用标志来安装才能启用扩展属性,因此这对于任何人的系统来说都可能无法正常工作。它们通常缩写为xattr
或xattrs
。
答案 4 :(得分:0)
我唯一知道的是extended attributes,但从我读到的关于ADS的内容来看,它是def。不一样的。你究竟用它做什么?
答案 5 :(得分:0)
常用的Linux文件系统不支持此功能。相反,您可以使用多个文件和合适的命名方案(可能只是将流索引附加到每个文件名),或者包含多个文件的存档;你会发现这种方法在其他方面更好 - 例如,如果有人想将Windows文件备份到具有非NTFS文件系统的媒体,Windows会发生什么?