есть ли что-то вроде альтернативных потоков данных в любой файловой системе linux?
в Windows NTFS есть хорошая, но в основном неиспользуемая функция под названием "Альтернативные потоки данных" (объявления), которые я недавно использовал в проекте hobby-dev.
на Mac HFS+ также есть аналогичная хорошая, но в основном неиспользуемая функция под названием "именованные вилки".
Я думаю о переносе этого проекта в Linux, но я не знаю, есть ли такая функция в файловой системе linux?
6 ответов
существуют файловые системы как в Windows, так и в Linux (и других ОС), которые поддерживают расширенные атрибуты (EAs). Поддержка Windows была добавлена для OS / 2 compat и не имеет никакого документированного интерфейса, за исключением хакерского метода через API резервного копирования (это то, что делает Cygwin). EAs предназначены только для хранения небольших значений. В Windows каждый советник имеет имя ASCII (в то время как почти все остальные имена являются Unicode), а общий размер всех EAs в файле не может быть больше 64k. EAs не являются файлами: вы не можете открыть дескриптор файла для советника и прочитать его как обычный файл.
альтернативные потоки данных-это отдельная функция, предоставляемая NTFS, которая позволяет предоставлять альтернативные вложенные файлы внутри файла. Каждый файл имеет поток данных без имени по умолчанию, который открывается автоматически, если не указать альтернативный. Вы можете открыть дескриптор ADS и прочитать (даже выполнить) его как обычный файл с одним (Unicode) именем файла. Реклама может быть размером с любой диск файл.
нет точного аналога ADSes в Linux, о котором я знаю, но вы можете использовать EAs на порту Linux, если значения данных малы.
проблема с объявлениями заключается в том, что Windows "потеряет" эти рекламные потоки в ту секунду, когда она перейдет в любую файловую систему, отличную от NTFS. Он не считает эти потоки важными,поэтому часто они не сохраняются. Вы обнаружите, что они недоступны или исчезают, когда через сетевой ресурс, при записи на компакт-диск, надевают USB-накопитель и т. д...
длинный и короткий, если у вас нет очень узкого фокуса для вашего приложения( всегда на NTFS), я бы избегал рекламных потоков в целом.
расширенные атрибуты поддерживаются некоторыми файловыми системами, в частности XFS и (я думаю) JFS; но ограничены по размеру (64k в XFS). Reiser4 поддерживает вилки произвольного размера; но он не поддерживается ни одним дистрибутивом, о котором я знаю. Другой вариант-ZFS, опять же не очень полезный.
в конце концов, вероятно, разумнее просто использовать каталог.
большинство файловых систем ОС Linux extended attributes
. Я не знаком с потоками NTFS, поэтому я не могу сравнить их. Большинство файловых систем необходимо монтировать с флагами для включения расширенных атрибутов, поэтому это может не работать в общем случае для любой системы. Они обычно сокращаются как xattr
или xattrs
.
единственное, что я знаю, что идет в этом направлении, это расширенные атрибуты, но из того, что я читал об объявлениях, это def. это не одно и то же. Для чего именно ты это используешь?
обычно используемые файловые системы Linux не поддерживают это. Вместо этого вы можете использовать несколько файлов и подходящую схему именования (просто добавьте индекс потока к каждому имени файла, возможно) или архив, содержащий несколько файлов; вы обнаружите, что такой подход лучше в любом случае - например, что происходит в Windows, если кто-то хочет создать резервную копию файлов Windows на носитель с файловой системой, отличной от NTFS?