Введение
Тип набора данных
В компьютерной файловой системе вилка — это набор данных, связанных с объектом файловой системы. Файловые системы, не поддерживающие вилки, допускают только один набор данных для содержимого, тогда как файловые системы с поддержкой вилок допускают несколько таких наборов данных. Каждый непустой файл должен иметь как минимум одну вилку, часто типа по умолчанию, и в зависимости от файловой системы, файл может иметь одну или несколько дополнительных вилок, которые, в свою очередь, могут содержать основные данные, являющиеся неотъемлемой частью файла, или только метаданные. В отличие от расширенных атрибутов, схожей функции файловой системы, обычно имеющей фиксированный размер, вилки могут иметь переменный размер, возможно, даже превышающий размер основной вилки данных файла. Размер файла равен сумме размеров всех его вилок. Популярные файловые системы, поддерживающие вилки, включают HFS+ от Apple и NTFS от Microsoft.
In a computer file system, a fork is a set of data associated with a file system object. File systems without forks only allow a single set of data for the contents, while file systems with forks allow multiple such contents. Every non empty file must have at least one fork, often of default type, and depending on the file system, a file may have one or more other associated forks, which in turn may contain primary data integral to the file, or just metadata. Unlike extended attributes, a similar file system feature which is typically of fixed size, forks can be of variable size, possibly even larger than the file's primary data fork. The size of a file is the sum of the sizes of each fork. Popular file systems that can use forks include Apple's HFS+ and Microsoft's NTFS.
Альтернативы
В файловых системах, не поддерживающих вилки, можно использовать несколько отдельных файлов, связанных между собой, в частности, сопутствующие файлы для метаданных. Однако файловая система не обеспечивает автоматическое сохранение связи между этими файлами, и её необходимо обрабатывать каждой программе, работающей с файлами. Альтернативой является контейнерный файл, который хранит дополнительные данные внутри заданного формата файла, или архивный файл, позволяющий хранить несколько файлов и метаданные в одном файле (внутри единой вилки). Это требует, чтобы программы обрабатывали контейнерный или архивный файл, а не полагались на обработку вилок файловой системой. Эти альтернативы требуют дополнительных усилий от программ, использующих данные, но обеспечивают переносимость на файловые системы, не поддерживающие вилки.
Яблоко
Форки файловой системы связаны с иерархической файловой системой Apple (HFS). HFS и оригинальная файловая система Apple Macintosh MFS позволяли объекту файловой системы иметь два типа форков: форк данных и форк ресурсов. Форк ресурсов был разработан для хранения нескомпилированных данных, которые использовались бы графическим пользовательским интерфейсом системы (GUI), таких как локализуемые текстовые строки, значок файла, используемый Finder, или меню и диалоговые окна, связанные с приложением. Однако эта функция была очень гибкой, поэтому ей нашли и другие применения, например, разделение документа текстового редактора на содержание и оформление, а затем хранение каждой части в отдельных ресурсах. Поскольку компилированный программный код также хранился в ресурсе, часто приложения состояли только из форка ресурсов и не имели форка данных. Одной из наименее известных особенностей HFS+ является то, что файл может иметь произвольное количество пользовательских "именованных форков" в дополнение к традиционным форкам данных и ресурсов. Эта функция осталась практически неиспользованной, так как Apple никогда не добавляла поддержку для неё в Mac OS 8.1 – 10.3.9. Начиная с версии 10.4, была реализована частичная поддержка расширенных встроенных атрибутов Apple. В Mac OS X до версии Mac OS X v10.4 пользователи, работающие с утилитами командной строки Unix, такими как tar, рисковали потерей данных, поскольку эти утилиты не были обновлены для обработки форков ресурсов файлов.
Новелл
Начиная с 1985 года, файловая система Novell NetWare (NWFS) и её преемник Novell Storage Services (NSS) были разработаны с нуля для использования разнообразных методов хранения метаданных файла. Часть метаданных хранится в Novell Directory Services (NDS), часть – в структуре каталогов на диске, а часть – в так называемых Novell "множественных потоках данных" вместе с самим файлом. Множественные потоки данных также обеспечивают возможность подключения и использования серверов NetWare клиентами Macintosh.
Майкрософт
NTFS, файловая система, представленная с Windows NT 3.1, поддерживает файловые форки, известные как альтернативные потоки данных (ADS). ReFS, новая файловая система, представленная с Windows Server 2012, изначально не поддерживала ADS, но в Windows 8.1 64-bit и Server 2012 R2 поддержка ADS длиной до 128 КБ была добавлена в ReFS. ADS изначально предназначалась для обеспечения совместимости с существующими операционными системами, поддерживающими форки. Компьютерная программа может быть настроена на открытие ADS путем указания имени ADS после двоеточия (:) в пути к файлу. Несмотря на поддержку, большинство программ, включая проводник Windows и команду dir (до Windows Vista), игнорируют ADS. Проводник Windows копирует ADS и предупреждает, если целевая файловая система не поддерживает их, но вычисляет размер только основного потока и не отображает потоки файла или папки. Начиная с Windows Vista, команда dir поддерживает отображение ADS. Windows PowerShell версии 3.0 и выше поддерживает работу с ADS.
Применение
Windows 2000 использует ADS для хранения эскизов в файлах изображений и для хранения сводной информации (например, заголовка и автора) в любом файле, не изменяя основной поток данных. С Windows XP компания Microsoft осознала, что ADS подвержен потере при перемещении файлов, содержащих их, с томов NTFS; поэтому Windows XP хранит их в основном потоке данных, когда это поддерживается форматом файла. Однако использование ADS в других целях не было прекращено. Service Pack 2 для Windows XP представил службу выполнения вложений (Attachment Execution Service), которая хранит сведения о происхождении загруженных файлов в ADS, называемом идентификатором зоны, чтобы защитить пользователей от загруженных файлов, которые могут представлять угрозу. Internet Explorer и Windows 8 расширили эту функцию с помощью SmartScreen. Internet Explorer также использует ADS для хранения значков сайтов (фавиконов) в файлах интернет-ярлыков.
Солнце
Solaris версии 9 и более поздние позволяют файлам иметь ветви. Ветви называются расширенными атрибутами в Solaris, хотя они не соответствуют общепринятому пониманию "расширенных атрибутов". Максимальный размер расширенного атрибута типа Solaris равен максимальному размеру файла, и они читаются и записываются аналогично файлам. Внутренне они фактически хранятся и используются как обычные файлы, поэтому их владелец и права доступа могут отличаться от родительского файла. Создание подкаталогов административно запрещено, поэтому их имена не могут содержать символы "/". Расширенные атрибуты в сетевой файловой системе версии 4 аналогичны расширенным атрибутам в стиле Solaris.