В компьютерной файловой системе ветвь — это набор данных, связанных с объектом файловой системы . Файловые системы без разветвлений допускают только один набор данных для содержимого, тогда как файловые системы с разветвлениями допускают несколько таких содержимых. Каждый непустой файл должен иметь хотя бы одно ответвление, часто типа по умолчанию, и в зависимости от файловой системы файл может иметь одно или несколько других связанных ответвлений, которые, в свою очередь, могут содержать первичные данные, неотъемлемые от файла, или просто метаданные . .
В отличие от расширенных атрибутов , аналогичной функции файловой системы, которая обычно имеет фиксированный размер, ветки могут иметь переменный размер, возможно, даже больше, чем ветка основных данных файла. Размер файла — это сумма размеров каждой вилки.
Популярные файловые системы, которые могут использовать вилки, включают HFS+ от Apple и NTFS от Microsoft .
В файловых системах без разветвлений вместо этого можно использовать несколько отдельных файлов, связанных друг с другом, особенно дополнительные файлы для метаданных. Однако соединение между этими файлами не сохраняется автоматически файловой системой и вместо этого должно обрабатываться каждой программой, работающей с файлами. Другой альтернативой является файл-контейнер , который хранит дополнительные данные в заданном формате файла, или файл-архив , который позволяет хранить несколько файлов и метаданных внутри файла (в пределах одного форка). Для этого необходимо, чтобы программы обрабатывали файл-контейнер или файл архива, а не развилки обработки файловой системы. Эти альтернативы требуют дополнительной работы программ, использующих данные, но выигрывают от переносимости на файловые системы, которые не поддерживают ответвления.
Разветвления файловой системы связаны с иерархической файловой системой 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 v10.4 пользователи, запускающие утилиты командной строки Unix , такие как tar , рискуют потерять данные, поскольку утилиты не были обновлены для обработки разветвлений ресурсов файлов. [4]
Начиная с 1985 года, файловая система Novell NetWare (NWFS) и ее преемница Novell Storage Services (NSS) были разработаны с нуля для использования различных методов хранения метаданных файла. Некоторые метаданные находятся в службах каталогов Novell (NDS), некоторые хранятся в структуре каталогов на диске, а некоторые хранятся, как это называет Novell, в «множественных потоках данных» вместе с самим файлом. Несколько потоков данных также позволяют клиентам Macintosh подключаться к серверам NetWare и использовать их .
NTFS , файловая система, представленная в Windows NT 3.1 , поддерживает ответвления файловой системы, известные как альтернативные потоки данных (ADS). [5] ReFS , новая файловая система, представленная в Windows Server 2012 , изначально не поддерживала ADS, [6] [7] [8] , но в 64-разрядной версии Windows 8.1 и Server 2012 R2 появилась поддержка ADS длиной до до 128 КБ, был добавлен в ReFS. [9]
Изначально ADS предназначалась для добавления совместимости с существующими операционными системами, поддерживающими форки. [ нужна цитация ] Компьютерной программе можно указать открыть ADS, указав имя ADS после знака двоеточия (:) после пути к файлу. [10] Несмотря на поддержку, большинство программ, включая Проводник Windows и команду dir (до Windows Vista), игнорируют ADS. Проводник Windows копирует 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.
Если файловая система поддерживает различные разветвления, приложения должны знать о них, иначе могут возникнуть угрозы безопасности. Разрешение устаревшему программному обеспечению доступа к данным без соответствующих прокладок является основной причиной таких проблем. [ нужна цитата ]
Если различные системные утилиты (проводник дисков, антивирусное программное обеспечение, архиваторы и т. д.) не знают о различных разветвлениях, могут возникнуть следующие проблемы: