2008-10-07 19 views
18

En Windows NTFS hay una característica agradable pero sin usar en su mayoría llamada "Alternate Data Streams" (ADS) que utilicé recientemente en un proyecto hobby-dev.¿hay algo así como flujos de datos alternativos en cualquier sistema de archivos de Linux?

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

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

+0

¿En su mayoría sin usar? Está usted seguro de eso. Es muy útil para ocultar datos. – Pacerier

+0

@Pacerier: sin usar, que ninguna interfaz de usuario o aplicaciones parecen interactuar con él de ninguna manera. –

+0

Eso es ** exactamente ** por qué son útiles para ocultar virus. – Pacerier

Respuesta

10

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 independiente 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 ADSes en Linux que yo sepa, pero en su lugar puede usar EA en el puerto Linux si los valores de los datos son pequeños.

+3

la secuencia de datos predeterminada se llama 'DATA' –

+3

@DanD., '$ DATA', no' DATA'. – Pacerier

0

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.

0

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

+1

Quiero almacenar algunos metadatos de archivos en él. –

0

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?

+3

Se supone que debes usar un programa de copia de seguridad que use las API de respaldo; empaquetarán todos los metadatos en un archivo (EA, descriptor de seguridad, flujos de datos, archivos cifrados, etc.) en una sola transmisión para guardar y restaurar más tarde . –

13

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 graba en un CD, se coloca en una unidad USB, etc.

Lo largo y lo corto es, a menos que tenga un dispositivo muy estrecho enfoque para su aplicación (siempre en NTFS), evitaría las transmisiones ADS por completo.

+2

Esto es aceptable para algunos casos de uso, como metadatos de almacenamiento en caché o compensaciones de archivos que de otro modo podrían (re) generarse/computarse con más esfuerzo. – hippietrail

7

Los atributos extendidos son compatibles con algunos sistemas de archivos, especialmente 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.

Cuestiones relacionadas