Sincronização seletiva de dois diretórios no UNIX (Solaris)

1

Eu estou querendo saber se alguém sabe de uma maneira legal de duplicar parcialmente (hard link) arquivos entre duas estruturas de diretórios?

Meu retorno atual é um script chamado pelo cron.

Como pano de fundo:

Eu pergunto desde que eu tenho dois grupos que ambos precisam acessar um corpo de arquivos em uma estrutura de diretório servida via HTTP usando o Tomcat. Um grupo privilegiado pode acessar todos os arquivos e um grupo menos privilegiado pode acessar apenas um subconjunto "público". Esses conjuntos não estão alinhados a diretórios específicos, mas a classe diferente de arquivo pode ser identificada por sua convenção de nomenclatura (mas não por extensão).

Portanto, minha idéia atual é servir dois diretórios separados, um contendo apenas private (possivelmente protegido por senha) e o outro contendo public. Então, para executar algum processo periódico por meio do qual eu crio hardlinks a partir dos arquivos públicos para que eles apareçam nos diretórios privados para a convienence dos usuários privilegiados. Eu escolho ligar nessa direção, já que é mais importante que o arquivo esteja disponível imediatamente para os usuários sem privilégios. (priv = admin, unpriv = usuário regular)

Espero que isso faça sentido. Vou tentar esclarecer se alguém tiver alguma dúvida.

    
por Tom Duckering 14.01.2010 / 05:33

2 respostas

1

Eu usaria links simbólicos.

Você pode usar este script Bash:

#!/bin/bash
ln -s $1 $2/$(basename $1)

com algo parecido com esses dois comandos:

find unpriv_criteria -exec ./linkscript {} /unpriv/dir \; 
find priv_criteria -exec ./linkscript {} /priv/dir \;
    
por 14.01.2010 / 06:32
0

Algo parecido com o que Dennis propôs funcionaria em um cron job ou similar.

Se este fosse o linux, eu apontaria você para inotify , o que permitiria eliminar o cron job e a latência de hardlinks refletindo o diretório original.

Isso não parece existir no Solaris, no entanto.

Se os hardlinks não forem muito críticos, uma tarefa do cron provavelmente funcionará bem.

    
por 14.01.2010 / 06:42