UNIX cria diretório que parece ter conteúdo de outros diretórios

UNIX cria diretório que parece ter conteúdo de outros diretórios

Se eu tiver 2 diretórios, a e b, alguém pode sugerir um método conveniente de criar um diretório que pareça ter o conteúdo de a e b sem copiar os arquivos? No momento, o que estou usando é ln -s * para carregar os links sym e, em seguida, excluí-los quando terminar. Eu preferiria que o conteúdo dos subdiretórios parecesse mesclado, e gerenciar isso com o método de link simbólico pode exigir alguns ajustes.

Não há problema se o diretório resultante for somente leitura de acordo com o aplicativo.

Responder1

Você pode efetivamente mesclar diretórios comUniãoFSsobrepondo os dois diretórios (chamados de ramificações neste contexto) em um único ponto de montagem.

Existem diversas implementações do UnionFS;UniãoFsFuseé um dos mais simples, pois é um aplicativo (e não um patch do kernel).

O site contém um link para seu arquivo. A compilação do código-fonte deve ser simples na maioria das distros.

No Ubuntu, por exemplo, basta instalar o pacotefusível unionfsexecutando o seguinte comando:

sudo apt-get install unionfs-fuse

Depois de instalado, você pode sobrepor os diretórios. Existem várias opções. Vou explicar brevemente os mais básicos:

  • O comando

      unionfs-fuse foo:bar baz
    

    sobrepõe o conteúdo dos diretóriosfooebarno diretóriobaz. 1

    Esta sobreposição será somente leitura; qualquer tentativa de criar ou modificar um arquivo embazresultará em umPermissão negada.erro. No entanto, você ainda poderá criar e modificar os arquivos dentrofooebareles mesmos.

    As colisões são tratadas de maneira fixa: se existir um arquivo em uma ramificação superior (foo), ele terá preferência sobre um arquivo de mesmo nome em uma ramificação inferior (bar).

  • O comando

      union-fuse foo=RW:bar=RO baz
    

    fazfoogravável ebar(somente leitura). Modificando arquivos defooserá possível, mas modificar arquivos debarnão será. Todos os arquivos recém-criados embazaparecerá emfoo.

  • O comando

      union-fuse -ocow foo=RW:bar=RO baz
    

    é semelhante ao último comando. Ocopiar ao escreveropção ( cow) tem o efeito de que a tentativa de modificar um arquivo debardentrobazresultará em uma cópia modificada do arquivo emfoo(ou qualquer outro ramo gravável de nível superior).

  • Com o comando

      union-fuse foo=RW:bar=RW baz
    

    tudo pode ser modificado. Novos arquivos serão criados no branch superior (foo).

  • O comando

      union-fuse foo=RO:bar=RW baz
    

    permite modificar os arquivos debardentrobaz, mas nenhum novo arquivo pode ser criado.

  • O comando

      sudo umount baz
    

    desfaz a montagem da união.

Veja também:homem uniãofs-fusível


1 bazdeve existir antes que este comando seja executado. Isto também se aplica a todos os outros comandos.

informação relacionada