Pasta virtual que combina um diretório somente leitura e um diretório de leitura / gravação (deduplicação de arquivo)

0

É possível no linux ter um diretório que contenha todo o conteúdo de outro diretório (de maneira somente leitura), mas você é capaz de escrever no diretório sem afetar o diretório 'pai'.

Para fornecer um contexto do que estou tentando alcançar, tenho um aplicativo que será executado para todos os usuários. Este aplicativo faz o download de vários "pacotes" para a pasta para a qual desejo ter essa funcionalidade. Cada um dos pacotes tem sua própria pasta única (que é um hash do conteúdo, portanto deve ser exclusivo por pacote - mas vamos supor que a colisão de hash é evitada com o software). No entanto, existem muitos pacotes, eu sei que todos os usuários vão querer adicionar e alguns que todos vão precisar. Se cada usuário preenche seu diretório com os mesmos pacotes, isso vai consumir espaço de forma não intencional, particularmente com os pacotes básicos que eu sei que todos os usuários terão.

A maneira que eu vejo é que quando o usuário escreve um arquivo você pode escrever na pasta mas ao ler da pasta ela se funde com a pasta pai OU o usuário pode ter uma pasta virtual de algum tipo que combina uma leitura -only e ler-escrever diretório com gravações indo automaticamente para o diretório de leitura-gravação (suponho um pouco semelhante ao estilo do Windows 7 Bibliotecas).

A outra opção que consigo pensar é completamente diferente da minha solicitação inicial, mas funcionaria tão bem, talvez até melhor, já que não exigiria que eu trabalhasse manualmente quais pacotes se sobrepõem entre os usuários, seria se houvesse um sistema de arquivos que pode ser usado para fornecer deduplicação. No entanto, existem problemas de desempenho que eu posso ver com isso - mas se você tem alguma idéia ou recursos que você pode me indicar para fazer isso, vou dar uma olhada. Não tenho certeza de como isso funcionaria, porque sei que, se uma pasta solicitada tiver o mesmo nome, ela não precisará ser baixada, mas, com a desduplicação, ela precisaria fazer o download do pacote para se duplicar. em si.

Isso é possível no Linux e, em caso afirmativo, quais recursos você pode fornecer para eu examinar as opções?

    
por flungo 23.10.2014 / 19:39

2 respostas

1

Se a sua distribuição incluir o btrfs, e se você considerar que ela está pronta para produção, você pode usar partições de semente do btrfs.

Seed devices. Create a (readonly) filesystem that acts as a template to seed other Btrfs filesystems. The original filesystem and devices are included as a readonly starting point for the new filesystem. Using copy on write, all modifications are stored on different devices; the original is unchanged.

Exemplos podem ser encontrados na página wiki do btrfs para sementes

    
por 23.10.2014 / 19:49
1
O

UnionFS pode fazer isso com qualquer sistema de arquivos subjacente que você queira. Eu entendo que também está incluído em muitas distribuições.

    
por 23.10.2014 / 23:16