NTFS备用数据流 - 好还是坏?

时间:2009-12-30 03:43:04

标签: architecture ntfs

我想为文件存储一些与应用程序相关的元数据,而NTFS备用数据流(AltDS)允许我将这些元数据直接存储在文件上,而不是存储在单独的数据库中。

我觉得这不是一个好主意。我知道这只适用于NTFS,但至少如果用户将文件复制/移动到非NTFS驱动器,他们会从Windows获得警告(是的,是的,没有人读警告,我知道) -

但是,在文件上存储其他数据可能会变得非常浪费,因为即使卸载了我的应用程序,AltDS也会保留。就像十年前人们使用“注册表清理工具”在卸载程序后从注册表中删除无用的条目以使系统运行更快(当清理器清理得太多时不太稳定......)。

我只是想知道他们可以合理用于什么?它们应该完全留给Microsoft Apps使用吗?或者是否存在某种类型的应用程序可能使用它们的某种常见策略(除了恶意软件)?

编辑:只是为了澄清我的想法是什么。我正处于为自己编写小型文档管理系统的早期阶段。因为我想有自由移动文件,我想在文件上存储元数据,这样如果我移动/重命名/修改它们,我的应用程序仍然可以识别它们。它可以是整个元数据,也可以只是与单独数据库一起使用的GUID。

总结给出的要点:

优点:

  • 元数据随文件移动,因此无需通过散列或文件名识别
  • 适用于所有文件类型,甚至是.txt文件,在这些文件中无法将任何数据存储在文件本身中

缺点:

  • 仅适用于NTFS,它可能不是未来Windows版本中的默认文件系统
    • 虽然如果MS在没有得到WinFS的情况下自动转换它会让我感到惊讶
  • 即使我的应用程序已卸载,AltDS也会保留
  • 隐私权问题
  • 脆弱
    • 大多数USB棒都是FAT32。许多私有文件服务器都是Linux。从Internet下载文件应该只传输文件而不传输流。简而言之:失去它们很容易。

8 个答案:

答案 0 :(得分:6)

另一个关键点:备份软件。有些人忽略了它,有些人没有恢复它,有些人支持它,但是如果没有你告诉它就不做任何事情。

答案 1 :(得分:4)

如果没有关于您要存储的数据类型的更多信息,很难说。您似乎意识到涉及其使用的一些问题,所以我不确定我能提供多少帮助。以下是我对备用数据流的一般看法:

首先,正如您所指出的,AD流仅适用于NTFS。如果您有可能需要将此元数据存储在FAT文件系统中,则需要某种回退机制。现代PC可能有NTFS格式的内置硬盘,但你遇到的大多数USB闪存盘仍然是FAT格式的。如果您的用户将数据文件存储在闪存驱动器上,请记住这一点。

除此之外,我无法想到避免AD流的任何技术原因,但我仍然对使用它们持谨慎态度。无论意图如何,人们都会对那些“隐藏”数据的应用程序感到紧张。考虑索尼rootkit惨败,等等。我并不是说你的应用程序差不多那么糟糕,但人们(特别是技术不太精通的人)可能无法区分。不过,我会允许它们可能适用于您的应用程序。当然,卸载后留下AD流的问题仍然非常真实。您可能需要考虑让运行卸载程序的人员选择运行程序来搜索其驱动器并清理剩余的流。

另外,请记住KISS principle。使用AD流真的是有效解决应用程序元数据存储问题的最简单方法吗?如果是这样,也许AD流是一个好主意,但如果没有,我会认真考虑采取另一种方法。

答案 2 :(得分:3)

我可以想到使用它们的一个很好的理由,这就是来自"how to use" guide的这个小小的问题:

  

备用数据流严格来说是NTFS文件系统的一项功能,未来的文件系统可能不支持。但是,Windows NT的未来版本将支持NTFS。

现在......这是措辞的方式,我想,技术上你是安全的。但是,如果微软决定取代/弃用NTFS - 并且它们确实在某一时刻非常接近 - 那么你将不得不争先恐后地升级你的软件,以便它能在更新的机器上运行。

现在似乎不太可能出现这种可能性,我认为

话虽如此,我确信有一些场景可以证明使用ADS是合理的。在我看来,这只是其中一种情况,如果你不是绝对确定它是正确的工具,那么它可能是错误的。

将元数据附加到文件通常是一个危险的游戏。只要看看ID3的邪恶混乱以及人们将EXIF数据留在图像中的令人尴尬的结果。

P.S。注册表清洁工不再使用了?为什么没有人告诉我!?

答案 3 :(得分:2)

备用数据流对于NTFS至关重要,并且始终受到支持。 当他们附加的文件被删除时,他们也会被删除 - 所以不用担心他们“坚持”

正如所有其他人所说,备份,复制到其他文件系统以及ADS的偏执都存在问题。

答案 4 :(得分:1)

如果你的应用程序可以在没有该数据的情况下运行,例如根据需要重新创建它,那么数据流是完全可以接受的。

鉴于它们在Windows中的使用方式,我认为它们不会很快消失。

答案 5 :(得分:1)

对你来说不好的主意,对MS来说是个坏主意。我认为他们真的是想在当天与Mac的数据和资源分叉文件架构竞争。如果Mac FS文件可以有2个分叉,那么我们将拥有无限的“分叉”,也许我们最终会弄清楚如何使用它们。

答案 6 :(得分:1)

将一个AltD添加到文件中,作为将特定于应用程序的字符串绑定在它周围的方法有一个问题:没有清理。如果文件得到副本,你的东西就会跟着它。对于这种情况,保持单独的数据库可能更有道德。

另一方面,如果文件非常由你自己控制,那么如果AltDs是一种有效的工作方式,请继续。

答案 7 :(得分:0)

到目前为止,我听不到的一件事是在必须隐藏某些信息的应用程序中使用AltDS(即医疗应用程序),而不希望隐藏其他类型的信息。

我喜欢AltDS的原因正是:我可以设计一个医学影像系统,我可以将医学影像保存在开放状态(如BMP,即没有任何患者信息详情),因为我可以保留在AltDS中。答对了。 优点:如果有人将文件复制到拇指驱动器 - 那么,所有人获得的是没有患者信息的BMP。

备份/恢复总是令人讨厌 - 我的解决方案是在备份上转换为专有文件格式,其中患者信息在与(原始)BMP相同的文件中编码/加密。

最后,如果您以XML格式存储隐藏信息,您的应用程序可能会消失,但信息仍然存在。信息应链接到文件本身,而不是应用程序。这应该存储在其他地方。

整体而言我是L-O-V-E AltDS。缺乏操作系统支持(无法查看AltDS数据),缺乏一般/公共知识(谁?什么?广告?什么样的广告)以及我不必担心要保留的其他信息这一事实与主文件同步(ahem Stream)允许我设计和实现非常强大的系统。 备份是一个无赖 - 特别是Joliet应该设计用于处理这些AltDS - 但我可以忍受它。

只是我的2c(好吧,也许3c ......)。