Pregunta ¿Hay alguna manera de hacer un "metarchivo"? (parece un archivo, pero las lecturas / escrituras se filtran a través de un programa)


Un archivo que se parece a un archivo para aplicaciones de terceros, pero las lecturas / escrituras se filtran a través de un programa.

Específicamente, lo que quiero hacer es tener un archivo que sea la concatenación de varios otros archivos que una aplicación de terceros puede leer / escribir. Será un archivo de texto, y los límites serán solo pragma o un formato similar. Cuando el tercero escribe en este archivo, el programa subyacente escribirá cada sección en los archivos fuente subyacentes. Cuando una aplicación de terceros lo lea, se construirá sobre la marcha a partir del contenido de los archivos subyacentes.

Hay una serie de usos que tengo para esto; la más inmediata es poder tener un archivo NEXTSTEPS.taskpaper para TaskPaper que está compuesto de muchos archivos NEXTSTEPS.taskpaper de muchos repositorios git de proyectos diferentes.

Si no existe una herramienta de este tipo, pretendo hackear uno (probablemente usando fsevents y escrito en ruby) y agradecería cualquier comentario sobre cómo abordarlo.

EDITAR: Me pregunto si otra posibilidad podría ser hacer un "sistema de archivos" usando Fusible. Esto podría restringir la ubicación de mi "metarchivo" a una ruta de nivel superior / Volúmenes / ... supongo, pero puedo vivir con eso.


1


origen




Respuestas:


ninja por OP, suspiro

Linux tiene una capa llamada "FUSE" destinada a escribir sistemas de archivos en el espacio de usuario, que ha sido portado a varios BSD, incluido OS X, anteriormente a través de MacFuse; hoy en día parece OSXFUSE es la implementación actual.

FUSE es un poco diferente de su idea de "metarchivo": funciona con sistemas de archivos completos, no solo archivos individuales, por lo que la API es de bajo nivel.

Sin embargo, es mucho más fácil que escribir un módulo kernel o un kext; existen enlaces Perl, Python, Ruby para escribir servidores FUSE personalizados. Probablemente llevaría unas horas escribir un sistema de archivos FUSE simple que sirva un archivo generado automáticamente.

(El servidor FUSE más popular es sshfs, que se conecta a otro servidor utilizando SFTP y lo expone como un sistema de archivos local, pero hay docenas más: ntfs-3g (un popular controlador NTFS); wikipediafs (expone artículos de Wikipedia como archivos); curlftpfs; Fuseiso; ...)


0



Todavía no he encontrado un buen tutorial básico, ¿conozco alguno? - Michael Johnston