在任何linux文件系统上都有类似备用数据流的东西吗?

时间:2008-10-07 18:20:54

标签: linux filesystems ntfs alternate-data-stream

在Windows NTFS上有一个很好但很多未使用的功能 我最近在一个业余爱好开发项目中使用的“备用数据流”(ADS)。

在Mac HFS +上,还有一个同样不错但很常用的功能称为“命名分叉”。

我正在考虑将这个项目移植到Linux,但我不知道Linux上的任何Filesystem是否都有这样的功能?

6 个答案:

答案 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流,所以我无法比较这两者。大多数文件系统需要使用标志来安装才能启用扩展属性,因此这对于任何人的系统来说都可能无法正常工作。它们通常缩写为xattrxattrs

答案 4 :(得分:0)

我唯一知道的是extended attributes,但从我读到的关于ADS的内容来看,它是def。不一样的。你究竟用它做什么?

答案 5 :(得分:0)

常用的Linux文件系统不支持此功能。相反,您可以使用多个文件和合适的命名方案(可能只是将流索引附加到每个文件名),或者包含多个文件的存档;你会发现这种方法在其他方面更好 - 例如,如果有人想将Windows文件备份到具有非NTFS文件系统的媒体,Windows会发生什么?