Pergunta

Eu tenho um sentimento que eu já sei a resposta para esta pergunta, mas eu pensei que eu iria verificar.

Eu tenho um número de diferentes pastas:

images_a/
images_b/
images_c/

Posso criar algum tipo de link simbólico tais que este novo diretório tem o conteúdo de todos os diretórios? Que é este novo "images_all" iria conter todos os arquivos em images_a, images_b e images_c?

Foi útil?

Solução

No. Você teria que simbolicamente ligar todos os arquivos individuais.

O que você poderia fazer é criar um trabalho para execução periódica que basicamente removeu todos os links simbólicos existentes em images_all, em seguida, recriar os links para todos os arquivos dos três outros diretórios, mas é um pouco de um truque, algo como isto:

rm -f images_all/*
for i in images_[abc]/* ; do; ln -s $i images_all/$(basename $i) ; done

Note que, embora este trabalho está sendo executado, ele pode aparecer para outros processos que os arquivos tenham temporariamente desapareceram.

Você também vai precisar tomar cuidado para o caso em que um único nome de arquivo existir em dois ou mais dos diretórios.


Tendo voltar a esta questão depois de um tempo, ele também ocorre-me que você pode minimizar o tempo durante o qual os arquivos não estão disponíveis.

Se você ligá-los a um diferente diretório, em seguida, fazer operações mv relativamente rápidas que minimizem o tempo. Algo como:

mkdir images_new
for i in images_[abc]/* ; do
    ln -s $i images_new/$(basename $i)
done

# These next two commands are the minimal-time switchover.
mv images_all images_old
mv images_new images_all

rm -rf images_old

Eu não testei que para que qualquer pessoa implementá-lo terá de confirmar a adequação ou não.

Outras dicas

Você poderia tentar um sistema de arquivos unioning como unionfs!

http://www.filesystems.org/project-unionfs.html

http://aufs.sourceforge.net/

para adicionar a paxdiablo é grande resposta, eu acho que você poderia usar cp -s
(-S ou --symbolic-ligação) que faz ligações simbólicas em vez de copiar literal

para talvez acelerar ou simplificar à maior adição de links simbólicos para o "merge" pasta A, dos arquivos da pasta B e C.

(eu não testei isso embora)

Eu não posso recordar do topo da minha cabeça, mas im certeza há alguma opção para CP para não substituir existente, assim, apenas links simbólicos de novos arquivos será "cp -s" ed

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top