Подтвердить что ты не робот

Есть ли что-то вроде альтернативных потоков данных в любой Linux файловой системе?

В Windows NTFS есть хорошая, но в основном неиспользуемая функция, называемая "Альтернативные потоки данных" (ADS), которые я недавно использовал в проекте hobby-dev.

В Mac HFS + есть также аналогичная приятная, но в основном неиспользуемая функция, называемая "именованные вилки".

Я подумываю о переносе этого проекта на Linux, но я не знаю, имеет ли какая-либо файловая система в linux такую ​​функцию?

4b9b3361

Ответ 1

Существуют файловые системы как для Windows, так и для Linux (и других ОС), которые поддерживают расширенные атрибуты (EAs). Поддержка Windows была добавлена ​​для совместимости с OS/2 и не имеет документального интерфейса, за исключением хакерского метода с помощью API резервного копирования (что делает Cygwin). EAs предназначены для хранения только небольших значений. В Windows каждый советник имеет имя ASCII (в то время как почти все остальные имена являются Unicode), а объединенный размер всех EAs в файле не может превышать 64k. EAs не являются файлами: вы не можете открыть дескриптор файла для EA и прочитать его как обычный файл.

Альтернативные потоки данных - это отдельная функция, предоставляемая NTFS, которая позволяет вам предоставлять альтернативные подфайлы внутри файла. Каждый файл имеет по умолчанию неназванный поток данных, который автоматически открывается, если вы не укажете альтернативный. Вы можете открыть дескриптор ADS и прочитать (даже выполнить) его как обычный файл с одним (Unicode) именем файла. ADS может быть размером с любой файл на диске.

Точный аналог ADSes в Linux, о котором я знаю, не существует, но вы можете использовать EAs на порту Linux, если значения данных невелики.

Ответ 2

Проблема с ADS заключается в том, что Windows "потеряет" те потоки ADS, которые она переместит в любую файловую систему, отличную от NTFS. Он не считает эти потоки важными, поэтому часто их не поддерживают. Вы обнаружите, что они недоступны или исчезают, когда через общий сетевой ресурс при записи на CD, на USB-накопитель и т.д.

Долгое и короткое из них, если у вас нет очень узкого фокуса для вашего приложения (всегда на NTFS), я бы вообще избегал потоков ADS.

Ответ 3

Расширенные атрибуты поддерживаются некоторыми файловыми системами, особенно XFS, и (я думаю) JFS; но ограничены по размеру (64k в XFS). Reiser4 поддерживает вилки произвольного размера; но это не поддерживается никаким дистрибутивом, о котором я знаю. Другой вариант - ZFS, опять же не очень удобный.

В конце концов, вероятно, разумнее просто использовать каталог.

Ответ 4

В большинстве файловых систем Linux есть extended attributes. Я не знаком с потоками NTFS, поэтому я не могу сравнивать их. Большинство файловых систем необходимо монтировать с флагами, чтобы включить расширенные атрибуты, поэтому это может не работать в общих чертах для любой системы. Обычно они сокращаются как xattr или xattrs.

Ответ 5

Единственное, что я знаю, которое несколько идет в этом направлении, - это расширенные атрибуты, но из того, что я читал о ADS, он def. не то же самое. Что именно вы используете для этого?

Ответ 6

Обычно используемые файловые системы Linux не поддерживают это. Вместо этого вы можете использовать несколько файлов и подходящую схему именования (просто добавьте индекс потока к каждому имени файла, возможно) или архив, содержащий несколько файлов; вы обнаружите, что такой подход лучше в любом случае - например, что происходит в Windows, если кто-то хочет создать резервную копию файлов Windows на носитель с файловой системой, отличной от NTFS?