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

方案
--

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

实现
--

### 苹果公司

更多：资源fork（英语：）
蘋果公司的分层文件系统（HFS）中fork与文件系统关系密切。HFS与原有的Mac系列（麦金塔）的文件系统麦金塔文件系统（英语：）（MFS）允许一个文件系统对象有多种fork：一个数据fork（英语：），一个资源fork（英语：），以及多个命名fork。

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

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

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

### Novell

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

### 微软

在Windows NT 3.1引入的NTFS文件系统支持被称为替代数据流（ADS）文件系统fork。随Windows Server 2012引入的新文件系统ReFS，最初不支持ADS，，但在Windows 8.1 64位及Server 2012 R2中已支持ADS，唯其长度最多128K的限制被加入到ReFS。

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

#### 使用

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

### Sun

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

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

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

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

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

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

参见
--

* 扩展文件属性

参考资料
----

1. ↑  Apple.. Apple. 1996-07-02  [2006-11-18]. （原始内容存档于2008-07-24）.
2. ↑  Bruce Horn.. Folklore.org.  [2006-11-18]. （原始内容存档于2006-10-23）.
3. ↑ . Apple. 2005-10-29  [2006-11-18]. （原始内容存档于2008-02-25）.
4. ↑  Microsoft.. Microsoft.  [2006-11-18]. [永久]
5. ↑  Verma, Surendra. Sinofsky, Steven , 编.. Building Windows 8. Microsoft. MSDN blogs. 16 January 2012  [20 January 2013]. （原始内容存档于2013-05-15）.
6. ↑  Foley, Mary Jo.. 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. ↑ . TechNet Library. 微软. 29 February 2012  [25 December 2013]. （原始内容存档于2017-02-01）.
9. 1 2  Law, Eric.. IEInternals. 微软. 8 September 2013  [17 November 2013]. （原始内容存档于2016-01-26）.
10. ↑  Bart De Smet.. B# .NET Blog. 2006-07-13  [2007-07-07]. （原始内容存档于2009-05-26）.
11. ↑ . TechNet. 微软. 9 August 2012  [2016年12月20日]. （原始内容存档于2016年6月24日）.
12. 1 2  Chen, Raymond.. The Old New Thing. 微软. 27 May 2011  [17 November 2013]. （原始内容存档于2013-07-27）.
13. ↑  Microsoft.. Microsoft. 2006-10-27  [2006-11-18]. （原始内容存档于2007-02-09）.
14. ↑  Chen, Raymond.. The Old New Thing. 微软. 1 May 2012  [17 November 2013]. （原始内容存档于2014-04-13）.
15. ↑  Bart De Smet.. B# .NET Blog. 2005-08-19  [2006-11-18]. （原始内容存档于2006-11-04）.
16. ↑  Chen, Raymond.. The Old New Thing. 微软. 4 November 2013  [2016-12-20]. （原始内容存档于2015-06-10）.

外部链接
----

* MSDN Library: File Streams（页面存档备份，存于）
* Alternate Data Streams（页面存档备份，存于）
* Alternate Data Streams in Windows




|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * 
* 论
* 编
文件系统 |
| --- |
|  |
| 
* 文件系统列表
* 文件系统的对比
* Unix的文件系统（英语：）

 |
|  |
| 磁盘 | 

|  |
| --- |
| 
* ADFS（英语：）
* AdvFS
* Amiga FFS（英语：）
* Amiga OFS（英语：）
* APFS
* AthFS（英语：）
* BFS
	+ Be文件系统（英语：）
	+ 启动文件系统（英语：）
* Btrfs
* DFS（英语：）
* EFS
	+ 加密文件系统
	+ 区段文件系统（英语：）
* Episode（英语：）
* ext
	+ ext2
	+ ext3
	+ ext3cow（英语：）
	+ ext4
* FAT
	+ exFAT
* Files-11（英语：）
* Fossil
* HAMMER（英语：）
* HFS
* HFS+
* HPFS
* HTFS（英语：）
* IBM通用并行文件系统（英语：）
* JFS
* LFS（英语：）
* MFS
	+ Macintosh文件系统（英语：）
	+ Tivo媒体文件系统（英语：）
* MINIX
* NetWare文件系统（英语：）
* Next3（英语：）
* NILFS（英语：）
	+ NILFS2（英语：）
* NSS（英语：）
* NTFS
* OneFS（英语：）
* PFS（英语：）
* QFS（英语：）
* QNX4FS（英语：）
* ReFS
* ReiserFS
	+ Reiser4（英语：）
* Reliance（英语：）
* Reliance Nitro（英语：）
* RFS
* SFS（英语：）
* Soup（英语：）
* Tux3（英语：）
* UBIFS
* UFS
* VxFS（英语：）
* WAFL（英语：）
* Xiafs（英语：）
* XFS
* Xsan（英语：）
* zFS（英语：）
* ZFS

 |
|  |
| 光碟 | 
* HSF（英语：）
* ISO 9660
* ISO 13490（英语：）
* UDF

 |
|  |
| 闪存和SSD | 
* APFS
* FAT
* exFAT
* CHFS（英语：）
* TFAT
* EROFS（英语：）
* FFS2
* F2FS
* HPFS
* JFFS（英语：）
* JFFS2
* JFS
* LogFS
* NILFS（英语：）
	+ NILFS2（英语：）
* NVFS（英语：）
* YAFFS
* UBIFS

 |
|  |
| 分布式 | 
* CXFS（英语：）
* GFS2（英语：）
* Google檔案系統
* OCFS2（英语：）
* OrangeFS（英语：）
* PVFS（英语：）
* QFS（英语：）
* Xsan（英语：）
* *更多...*

 |

 |
|  |
| NAS | 
* AFS（OpenAFS）
* AFP
* Coda
* DFS
* GPFS（英语：）
* Google檔案系統
* Lustre
* NCP
* NFS
* POHMELFS（英语：）
* Hadoop
* SMB (CIFS)
* SSHFS
* *更多...*

 |
|  |
| 特殊 | 

|  |
| --- |
| 
* Aufs
* AXFS（英语：）
* 启动文件系统（英语：）
* CDfs（英语：）
* 光盘文件系统（英语：）
* Cramfs
* Davfs2（英语：）
* EROFS（英语：）
* FTPFS
* FUSE
* GmailFS
* Lnfs
* LTFS（英语：）
* MVFS（英语：）
* SquashFS
* UMSDOS（英语：）
* OverlayFS
* UnionFS（英语：）
* WBFS（英语：）

 |
|  |
| 伪 | 
* configfs（英语：）
* devfs（英语：）
* debugfs（英语：）
* kernfs（英语：）
* procfs
* specfs
* sysfs
* tmpfs
* WinFS

 |
|  |
| 加密（英语：） | 
* eCryptfs
* EncFS
* EFS
* Rubberhose（英语：）
* SSHFS
* ZFS

 |

 |
|  |
| 类型 | 
* 集群
	+ 全局（英语：）
	+ 网格（英语：）
	+ 自我认证（英语：）
* 闪存
* 日志
* 日志结构（英语：）
* 对象
* 面向记录（英语：）
* 语义（英语：）
* 隐写（英语：）
* 合成（英语：）
* 版本（英语：）

 |
|  |
| 特性 | 

|  |
| --- |
| 
* 保留大小写
* 寫入時複製
* 重复数据删除
* 数据擦洗（英语：）
* 原地执行（英语：）
* Extent
* 文件属性
	+ 扩展文件属性
* 文件更改日志
* Fork
* 链接
	+ 硬链接
	+ 符号链接

 |
|  |
| 访问控制（英语：） | 
* 存取控制串列
* 文件系统级加密（英语：）
* 权限
	+ Modes（英语：）
	+ 粘滞位

 |

 |
|  |
| 接口 | 
* 檔案管理器
* 文件系统API（英语：）
	+ 可安装文件系统
* 虛擬檔案系統

 |

 |