For faster navigation, this Iframe is preloading the Wikiwand page for Fork (文件系统).

Fork (文件系统)

此條目翻譯自其他語言維基百科,需要相關領域的編者協助校對翻譯。如果您精通本領域,又能清楚地將來源語言翻譯為中文,歡迎您協助校訂翻譯。原文参见维基数据

在计算机文件系统领域中,fork是一个与文件系统对象相关的数据集。没有fork机制的文件系统只允许内容拥有单个数据集,而有fork的文件系统允许多个内容。每个非空的文件至少有一个fork(通常为默认类型);因文件系统而不同,一个文件可能有一个或多个相关联的fork;fork可能包含有关该文件主体的数据,或者只是元数据。不同于通常为固定大小的一个类似的文件系统特性——扩展文件属性,fork可以为可变大小,甚至可能大于文件的主数据fork。一个文件的大小是其各fork大小的总和。因为其是可变大小(不同于固定大小的元数据),Fork也称为数据(streams),但它与其他的“”所表现出的“可用性随时间而变动(包括无限期)”不同。

方案

在没有fork的文件系统上,用户可以使用彼此互相关联的多个单独文件,尤其是用sidecar file来存储元数据。但是,这些文件间的连接不会由文件系统自动保留,并且每个程序都必须支持按这些文件来工作。另一种选择是容器文件,其将额外数据存储在指定的文件格式或者一个archive file中,因此允许在一个文件(单个fork)中存储多个文件及元数据。这将要求程序处理容器文件或压缩文件,而不是由操作系统处理fork。这些替代方案均需要处理数据的程序进行额外的处理,但对不支持fork的文件系统的可移植性更佳。

实现

苹果公司

蘋果公司分层文件系统(HFS)中fork与文件系统关系密切。[1]HFS与原有的Mac系列(麦金塔)的文件系统麦金塔文件系统英语Macintosh File System(MFS)允许一个文件系统对象有多种fork:一个数据fork英语Data fork,一个资源fork英语Resource fork,以及多个命名fork。

资源fork的设计是为存储被系统的图形用户界面(GUI)使用的非编译数据,例如可本地化文本字符串,由Finder或菜单使用的文件图标,以及应用程序相关的菜单和对话框等。[2]但这个特性非常灵活,因此也出现了额外的用途,例如将文字处理文档处理为内容和表示法,然后将各个部分存储在单独的资源中。由于编译后的软件代码也存储在资源中,所以应用程序通常只包含一个资源fork,而没有数据fork。

HFS+的一项最晦涩的特性是,一个文件除了传统的数据和资源fork之外,还可以有任意数量的自定义的“命名fork”。此特性很少被使用,因为苹果公司从未在Mac OS 8.110.3.9上添加对它的支持。从10.4开始,一个部分实现被完成,以支持苹果的扩展内联属性

Mac OS X v10.4之前,用户运行Mac OS X上所自带的经典的Unix命令行实用工具(例如tar)可能带来数据丢失风险,因为这些工具未被更新以支持处理文件的资源fork,直到v10.4。[3]

Novell

从1985年开始,Novell NetWare File System英语NetWare File System(NWFS)及其继任者Novell Storage Services英语Novell Storage Services(NSS)就已从头设计多种存储文件元数据的方法。部分元数据存储在Novell Directory Services英语Novell Directory Services(NDS)中,部分元数据存储在磁盘上的目录结构中,部分存储在文件本身的“多项数据流”中。多项数据流还允许Macintosh客户端附加和使用NetWare服务器。

微软

Windows NT 3.1引入的NTFS文件系统支持被称为替代数据流(ADS)文件系统fork。[4]Windows Server 2012引入的新文件系统ReFS,最初不支持ADS,[5][6][7],但在Windows 8.1 64位及Server 2012 R2中已支持ADS,唯其长度最多128K的限制被加入到ReFS。[8]

ADS最初是为添加与现有的支持fork的操作系统的兼容性。计算机程序可以直接在文件路径的后面添加一个冒号(:)及指定的ADS名称来打开一个ADS。[9]尽管有此支持,但包括檔案總管DIR命令(Windows Vista之前)在内的大多数程序都会忽略ADS。Windows檔案總管会复制ADS并在目标文件系统不支持ADS时发出警告,但只计算主流的大小,并且不会列出文件或文件夹的流。Windows Vista中的DIR命令支持显示ADS。[10]Windows PowerShell v3.0及之后的版本支持操作ADS。[11]

使用

Windows 2000使用ADS以在图像文件中存储缩略图,并且在任何文件中存储摘要信息(诸如标题、作者等),这样不更改主数据流。[12][13]Windows XP中,微软已意识到当文件被移出NTFS卷时,其所含的ADS容易丢失;因此Windows XP为只要文件格式支持,就尽量将数据存储在主数据流中。[12]Windows Vista停止支持添加摘要信息,微软认为用ADS操作它过于敏感。[14]但是,用于其他目的的ADS没有停止,Windows XP的Service Pack 2引入了附件执行服务,它将已下载文件的原始来源详情存储在一个名为“区域标识符”的ADS中,以努力保护用户免受下载文件所带来的风险。[15]Internet Explorer和Windows 8则是通过Microsoft SmartScreen执行此功能。[16]Internet Explorer也使用ADS来在Internet快捷方式文件中存储Favicon[9]

Sun

Solaris第9版及之后的版本允许文件有“扩展属性”,这实际上就是fork;一个扩展属性的最大大小与文件的最大大小相同,并且读写它们是采用与读写文件相同的方式。在内部,它们实际上像普通文件一样存储和访问,因此其所有权和权限可能与父文件的所有权和权限相异。因为路径会与子目录冲突,因此它们的文件名不能包含“/”字符。

网络文件系统(NFS)第4版支持扩展文件属性,与Solaris的方式大致相同。

可能的安全问题和数据丢失风险

在文件系统支持某种或多种fork时,应用程序应该感知它们,以及注意数据和安全风险。允许经典软件英语Legacy system访问无适当兼容层的数据是发生此类问题的主要原因。[來源請求]

如果各类系统实用程序(磁盘资源管理器、防病毒软件、压缩归档程序等)未感知fork,可能导致遇到下列问题:

  • 用户不会得知任何fork的存在,也不知道文件的实际总大小,只能看到文件的主数据流的大小。
  • 计算机病毒可能在Windows上使用替代数据流(ADS)隐藏而逃脱检测,如果防病毒软件未意识到fork的存在。
  • 在通过fork不敏感的通道发送文件时,数据可能丢失。这些渠道包括例如电子邮件、不支持fork的文件系统,并也包括在支持fork的文件系统上使用不支持fork的软件复制或打包(压缩、归档)文件。

参见

参考资料

  1. ^ Apple. File Forks. Apple. 1996-07-02 [2006-11-18]. (原始内容存档于2008-07-24). 
  2. ^ Bruce Horn. The Grand Unified Model (1) - Resources. Folklore.org. [2006-11-18]. (原始内容存档于2006-10-23). 
  3. ^ Command-line Backup Solutions on Mac OS X. Apple. 2005-10-29 [2006-11-18]. (原始内容存档于2008-02-25). 
  4. ^ Microsoft. Files and Clusters. Microsoft. [2006-11-18]. [永久失效連結]
  5. ^ Verma, Surendra. Sinofsky, Steven , 编. Building the next generation file system for Windows: ReFS. Building Windows 8. Microsoft. MSDN blogs. 16 January 2012 [20 January 2013]. (原始内容存档于2013-05-15). 
  6. ^ Foley, Mary Jo. Microsoft goes public with plans for its new Windows 8 file system. ZDNet. CBS互動. 16 January 2012 [21 January 2013]. (原始内容存档于2013-05-15). 
  7. ^ Windows Server 2012: Does ReFS replace NTFS? When should I use it?页面存档备份,存于互联网档案馆) - Martin Lucas, TechNet
  8. ^ Resilient File System Overview. TechNet Library. 微软. 29 February 2012 [25 December 2013]. (原始内容存档于2017-02-01). 
  9. ^ 9.0 9.1 Law, Eric. Fun with Favicons. IEInternals. 微软. 8 September 2013 [17 November 2013]. (原始内容存档于2016-01-26). 
  10. ^ Bart De Smet. Use Vista's DIR command to display alternate data streams. B# .NET Blog. 2006-07-13 [2007-07-07]. (原始内容存档于2009-05-26). 
  11. ^ FileSystem Provider (Windows PowerShell 3.0). TechNet. 微软. 9 August 2012 [2016年12月20日]. (原始内容存档于2016年6月24日). 
  12. ^ 12.0 12.1 Chen, Raymond. Why are custom properties created on Windows 2000 lost when I view the file from newer versions of Windows?. The Old New Thing. 微软. 27 May 2011 [17 November 2013]. (原始内容存档于2013-07-27). 
  13. ^ Microsoft. Indexing service adds data streams to image files. Microsoft. 2006-10-27 [2006-11-18]. (原始内容存档于2007-02-09). 
  14. ^ Chen, Raymond. What happened to the Summary information created on Windows 2000 and Windows XP?. The Old New Thing. 微软. 1 May 2012 [17 November 2013]. (原始内容存档于2014-04-13). 
  15. ^ Bart De Smet. Demo of "Attachment Execution Service internals" in Windows XP SP2 and Windows Server 2003 SP1. B# .NET Blog. 2005-08-19 [2006-11-18]. (原始内容存档于2006-11-04). 
  16. ^ Chen, Raymond. Manipulating the zone identifier to specify where a file was download from. The Old New Thing. 微软. 4 November 2013 [2016-12-20]. (原始内容存档于2015-06-10). 

外部链接

{{bottomLinkPreText}} {{bottomLinkText}}
Fork (文件系统)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?