existe uma maneira de fazer um “metarquivo”? (parece um arquivo, mas as leituras / gravações são filtradas por um programa)

1

Um arquivo que parece um arquivo para aplicativos de terceiros, mas as leituras / gravações são filtradas por um programa.

Especificamente, o que eu quero fazer é ter um arquivo que seja a concatenação de vários outros arquivos que um aplicativo de terceiros possa ler / gravar. Será um arquivo de texto e os limites serão apenas marcas de pragma ou um formato semelhante. Quando o terceiro escrever nesse arquivo, o programa subjacente gravará cada seção nos arquivos de origem subjacentes. Quando um aplicativo de terceiros o lê, ele será construído rapidamente a partir do conteúdo dos arquivos subjacentes.

Existem vários usos que eu tenho para isso; o mais imediato é poder ter um arquivo NEXTSTEPS.taskpaper para o TaskPaper que é composto de muitos arquivos NEXTSTEPS.taskpaper de vários repositórios diferentes do projeto.

Se não existe uma ferramenta desse tipo, pretendo invadir uma delas (provavelmente usando fsevents & escrito em ruby) e gostaria de receber qualquer feedback sobre como abordá-la.

EDIT: Eu estou querendo saber se outra possibilidade seria fazer um "sistema de arquivos" usando Fuse . Isso restringiria a localização do meu "metarquivo" a um caminho de nível superior / Volumes / ... Eu acho, mas posso viver com isso.

    
por Michael Johnston 08.05.2014 / 22:28

1 resposta

0

ninja'd por OP, suspira

O Linux tem uma camada chamada "FUSE" destinada a escrever sistemas de arquivos no espaço do usuário, que foi portada para vários BSDs, incluindo o OS X, anteriormente através de MacFuse ; hoje em dia parece OSXFUSE é a implementação atual.

O FUSE é um pouco diferente da sua idéia de "metarquivo" - ele funciona com sistemas de arquivos inteiros, não apenas arquivos únicos, então a API é um pouco de baixo nível.

No entanto, é muito mais fácil do que escrever um módulo do kernel ou um kext - existem links Perl, Python, Ruby para escrever servidores FUSE personalizados. Provavelmente levaria algumas horas para escrever um sistema de arquivos FUSE simples que serve um arquivo gerado automaticamente.

(O servidor FUSE mais popular é sshfs , que se conecta a outro servidor usando SFTP e expõe isso como um sistema de arquivos local, mas existem dúzias mais - ntfs-3g (um popular driver NTFS); wikipediafs (expõe artigos da Wikipedia como arquivos); curlftpfs; fuseiso; ...)

    
por 08.05.2014 / 23:10

Tags