linux filesystems ntfs alternate-data-stream

¿Hay algo así como flujos de datos alternativos en cualquier sistema de archivos de Linux?



filesystems ntfs (6)

En Windows NTFS hay una característica agradable pero en su mayoría no utilizada llamada "Alternate Data Streams" (ADS) que utilicé recientemente en un proyecto hobby-dev.

En Mac HFS + también hay una característica similar pero muy poco utilizada llamada "named forks".

Estoy pensando en trasladar este proyecto a Linux, pero no sé si algún sistema de archivos en Linux tiene esa característica.


El problema con ADS es que Windows "perderá" esas transmisiones ADS en el segundo momento que se mueva a cualquier sistema de archivos que no sea NTFS. No considera que esas transmisiones sean importantes, por lo que a menudo no se guardan. Descubrirá que no están accesibles o desaparecen cuando se comparte una red, cuando se graban en un CD, se colocan en un dispositivo USB, etc.

En resumidas cuentas, a menos que tenga un enfoque muy estrecho para su aplicación (siempre en NTFS), evitaría las transmisiones ADS por completo.


Existen sistemas de archivos en Windows y Linux (y otros sistemas operativos) que admiten atributos extendidos (EA). El soporte de Windows se agregó para la compatibilidad de OS / 2 y no tiene ninguna interfaz documentada, a excepción de un método hacky a través de la API de respaldo (eso es lo que hace Cygwin). Los EA están diseñados para almacenar valores pequeños solamente. En Windows, cada EA tiene un nombre ASCII (mientras que casi todos los demás nombres son Unicode) y el tamaño combinado de todos los EA en un archivo no puede ser mayor que 64k. Los EA no son archivos: no se puede abrir un identificador de archivo a un EA y leerlo como un archivo normal.

Las secuencias de datos alternativas son una función separada proporcionada por NTFS que le permite proporcionar subarchivos alternativos dentro de un archivo. Cada archivo tiene una secuencia de datos predeterminada sin nombre que se abre automáticamente a menos que especifique una alternativa. Puede abrir un identificador a un ADS y leerlo (incluso ejecutarlo) como un archivo normal, con un único nombre de archivo (Unicode). Un ADS puede ser tan grande como cualquier archivo de disco.

No existe un análogo exacto de las ADS en Linux que conozco, pero es posible que pueda usar EA en el puerto Linux si los valores de los datos son pequeños.


La mayoría de los sistemas de archivos Linux tienen extended attributes . No estoy familiarizado con las transmisiones NTFS, así que no puedo comparar las dos. La mayoría de los sistemas de archivos deben estar montados con indicadores para habilitar los atributos extendidos, por lo que es posible que esto no funcione de forma genérica para el sistema de nadie. Generalmente se abrevian como xattr o xattrs .


Lo único que sé, que va un poco en esa dirección son los atributos extendidos , pero por lo que leí sobre ADS es def. no es lo mismo ¿Para qué estás usando eso exactamente?


Los atributos extendidos son compatibles con algunos sistemas de archivos, particularmente XFS, y (creo) JFS; pero tienen un tamaño limitado (64k en XFS). Reiser4 admite horquillas de tamaño arbitrario; pero no es compatible con ninguna distribución que yo sepa. Otra opción es ZFS, de nuevo no es muy útil.

Al final, probablemente sea más inteligente usar un directorio.


Los sistemas de archivos Linux comúnmente utilizados no son compatibles. En su lugar, podría usar varios archivos y un esquema de nombres adecuado (simplemente adjunte el índice de flujo a cada nombre de archivo, tal vez), o un archivo que contenga varios archivos; De todas formas, encontrará que ese enfoque es mejor de otras maneras: por ejemplo, ¿qué sucede en Windows si alguien quiere hacer una copia de seguridad de los archivos de Windows en un medio con un sistema de archivos que no sea NTFS?