В файловой системе компьютера форк — это набор данных, связанных с объектом файловой системы. Файловые системы без форков допускают только один набор данных для содержимого, в то время как файловые системы с форками допускают несколько таких содержимых. Каждый непустой файл должен иметь по крайней мере один форк, часто типа по умолчанию, и в зависимости от файловой системы файл может иметь один или несколько других связанных форков, которые в свою очередь могут содержать первичные данные, неотъемлемые от файла, или просто метаданные .
В отличие от расширенных атрибутов , аналогичной функции файловой системы, которая обычно имеет фиксированный размер, форки могут иметь переменный размер, возможно, даже больший, чем первичная форк данных файла. Размер файла — это сумма размеров каждой форки.
Популярные файловые системы, которые могут использовать форки, включают HFS+ от Apple и NTFS от Microsoft .
В файловых системах без ветвей вместо этого можно использовать несколько отдельных файлов, связанных друг с другом, в частности, файлы sidecar для метаданных. Однако связь между этими файлами не сохраняется автоматически файловой системой и должна обрабатываться каждой программой, которая работает с файлами. Другой альтернативой является файл-контейнер , который хранит дополнительные данные в заданном формате файла, или файл-архив , который позволяет хранить несколько файлов и метаданных в файле (в пределах одной ветви). Это требует, чтобы программы обрабатывали файл-контейнер или файл-архив, а не файловая система обрабатывала ветви. Эти альтернативы требуют дополнительной работы программ, использующих данные, но выигрывают от переносимости в файловые системы, которые не поддерживают ветви.
Ветви файловой системы связаны с иерархической файловой системой Apple (HFS). [1] HFS и оригинальная файловая система Apple Macintosh MFS позволяли объекту файловой системы иметь два вида веток: ветку данных и ветку ресурсов .
Ресурсная ветка была разработана для хранения нескомпилированных данных, которые будут использоваться графическим пользовательским интерфейсом системы (GUI), например, локализуемые текстовые строки, значок файла для использования Finder или меню и диалоговые окна, связанные с приложением. [2] Однако эта функция была очень гибкой, поэтому были найдены дополнительные применения, такие как разделение документа текстового процессора на содержимое и представление, а затем сохранение каждой части в отдельных ресурсах. Поскольку скомпилированный программный код также хранился в ресурсе, часто приложения состояли только из ресурсной ветки и не имели ветки данных.
Одной из самых неясных особенностей HFS+ является то, что файл может иметь произвольное количество пользовательских «именованных форков» в дополнение к традиционным форкам данных и ресурсов. Эта функция осталась в значительной степени неиспользованной, поскольку Apple никогда не добавляла ее поддержку в Mac OS 8.1 - 10.3.9 . Начиная с 10.4 , была сделана частичная реализация для поддержки расширенных встроенных атрибутов Apple . [3]
В Mac OS X до версии Mac OS X 10.4 пользователи, использующие утилиты командной строки Unix, такие как tar, рисковали потерей данных, поскольку утилиты не были обновлены для обработки вилок ресурсов файлов. [4]
Начиная с 1985 года Novell NetWare File System (NWFS) и ее преемник Novell Storage Services (NSS) были разработаны с нуля для использования различных методов хранения метаданных файла. Некоторые метаданные находятся в Novell Directory Services (NDS), некоторые хранятся в структуре каталогов на диске, а некоторые хранятся, как это называет Novell, в «множественных потоках данных» вместе с самим файлом. Множественные потоки данных также позволяют клиентам Macintosh подключаться к серверам NetWare и использовать их.
NTFS , файловая система, представленная в Windows NT 3.1 , поддерживает ответвления файловой системы, известные как альтернативные потоки данных (ADS). [5] ReFS , новая файловая система, представленная в Windows Server 2012 , изначально не поддерживала ADS, [6] [7] [8] но в Windows 8.1 64-bit и Server 2012 R2 в ReFS была добавлена поддержка ADS длиной до 128 КБ. [9]
ADS изначально предназначался для добавления совместимости с существующими операционными системами, которые поддерживают форки. [ необходима цитата ] Компьютерная программа может быть направлена на открытие ADS, указав имя ADS после двоеточия (:) после пути к файлу. [10] Несмотря на поддержку, большинство программ, включая Windows Explorer и команду dir (до Windows Vista), игнорируют ADS. Windows Explorer копирует ADS и предупреждает, когда целевая файловая система не поддерживает их, но только вычисляет размер основного потока и не выводит список потоков файла или папки. Начиная с Windows Vista , dir
команда поддерживает отображение ADS. [11] Windows PowerShell v3.0 и более поздние версии поддерживают управление ADS. [12]
Windows 2000 использует ADS для хранения миниатюр в файлах изображений и для хранения сводной информации (такой как название и автор) в любом файле, не изменяя основной поток. [13] [14] С Windows XP Microsoft поняла, что ADS подвержены потере, когда файлы, содержащие их, перемещаются с томов NTFS; таким образом, Windows XP сохраняет их в основном потоке, когда формат файла это поддерживает. [13] Windows Vista полностью прекратила поддержку добавления сводной информации, так как Microsoft решила, что они слишком чувствительны для обработки ADS. [15] Но использование ADS для других целей не прекратилось. Пакет обновления 2 для Windows XP представил службу выполнения вложений, которая хранит сведения об источнике загруженных файлов в ADS, называемой идентификатором зоны , в попытке защитить пользователей от загруженных файлов, которые могут представлять риск. [16] Internet Explorer и Windows 8 расширили эту функцию с помощью SmartScreen . [17] Internet Explorer также использует ADS для хранения значков в файлах ярлыков Интернета . [10]
Solaris версии 9 и более поздние версии позволяют файлам иметь ветвления. В Solaris ветвления называются расширенными атрибутами , хотя они не попадают в обычное значение « расширенного атрибута ». Максимальный размер расширенного атрибута типа Solaris совпадает с максимальным размером файла, и они читаются и записываются так же, как файлы. Внутри они фактически хранятся и к ним осуществляется доступ как к обычным файлам, поэтому их владелец и разрешения могут отличаться от таковых у родительского файла. Подкаталоги административно [ требуется разъяснение ] отключены, поэтому их имена не могут содержать символы «/».
Расширенные атрибуты в сетевой файловой системе версии 4 аналогичны расширенным атрибутам в стиле Solaris.
Когда файловая система поддерживает различные форки, приложения должны знать о них, иначе могут возникнуть риски безопасности. Разрешение устаревшему программному обеспечению получать доступ к данным без соответствующих шимов на месте является основным виновником таких проблем. [ необходима цитата ]
Если различные системные утилиты (проводник, антивирусное ПО, архиваторы и т. д.) не знают о различных форках, могут возникнуть следующие проблемы: