
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.