Un file virtual que contiene la concatenación de otros files

¿Hay alguna manera de crear un object de sistema de files similar a esto?

mknod files p cat file1 file2 ... fileN > files 

pero tal que se puede search en, como si fuera un file regular?

En los sistemas operativos basados ​​en Linux, eso se puede hacer con dispositivos de bloque de networking o dispositivos mapeadores de dispositivos. El file que obtienes es un dispositivo de bloque.

Con nbd :

 ln -s /path/to/first-file file.0 ... ln -s /path/to/last-file file.19 nbd-server -C /dev/null -m 127.0.0.1:12345 file sudo nbd-client localhost 12345 /dev/nbd0 

(la concatenación es /dev/nbd0 ).

Con el mapeador de dispositivos (los tamaños de los files deben ser múltiplos de 512):

 sudo losetup /dev/loop0 file1 sudo losetup /dev/loop1 file2 s0=$(sudo blockdev --getsize /dev/loop0) s1=$(sudo blockdev --getsize /dev/loop1) printf '%s\n' "0 $s0 linear /dev/loop0 0" "$s0 $s1 linear /dev/loop1 0" | sudo dmsetup create mybundle 

(la concatenación es /dev/mapper/mybundle ).

escribió un controller de fusible hoy, si alguien está interesado en la solución de fusible (el asignador de dispositivo así como la solución nbd anterior crearán dispositivos de bloque no files regulares, que se romperán, si desea usar la salida resultante directamente con la edición de video) software u otras herramientas que no están preparadas para leer directamente desde un dispositivo de bloque)

https://github.com/schlaile/concatfs

Básicamente lo respondiste en la primera oración de la pregunta: sí, se puede hacer. Sin embargo, tendrías que escribir un controller de sistema de files personalizado. Si se supone que es un object del sistema de files, tiene que ser manejado por el núcleo en algún nivel (que incluye FUSE ). El controller tendría que proporcionar un backend para la API de syscalls del sistema de files estándar ( stat() , open() etc., incluida la búsqueda). No se puede hacer completamente en el espacio de usuario (al less no con un kernel monolítico, pero incluso con un microkernel aún se necesita proporcionar un controller de sistema de files, aunque se ejecute como un process de espacio de usuario normal).