Comparar pasta origem com pasta destino e copiar os arquivos que faltam
Estava com problemas para resolver este assunto no Linux, procurei muito na net, postei no fórum e não consegui uma resposta satisfatória. Então com auxílio de um livro consegui criar este script, que acredito ser de grande utilidade, uma vez que o rsync não me ajudou muito.
Caso achem que o código está muito poluído, retirem os comentários.
Para mim funcionou, pois meus arquivos sempre estarão na pasta origem e faltando na pasta destino, caso seja o contrário, aqui dá para ter uma boa idéia de como correr atrás.
ABS...
#!/bin/sh
#São necessários alterar apenas estas 3(três) variáveis
origem=/teste #Pasta de origem, altere /teste pelo caminho necessário
dest=/teste2 #Pasta destino, altere /teste2 pelo caminho necessário
arq_comp=/scripts/arq_compara #Arquivo criado para comparação entre as duas pastas, altere /scripts/arq_compara pelo caminho necessário
diff /$origem /$dest | cut -d: -f2 | cut -d" " -f2 > $arq_comp #Compara as duas pastas, recorte o que não interessa e deixe só o nome do arquivo e jogue para um arquivo de comparação que será lido durante a exec do programa
if test -s $arq_comp #Verifica se o arquivo de comparação está vazio.
then
while test -s $arq_comp #Caso não esteja, entra em loop para sincronismo
do
var=`head -1 $arq_comp` #Lê a primeira linha do arq de comparação e joga para uma variável temporária
cp $origem/$var /$dest #Copia o arquivo que falta da pasta origem para o dest.
sed -i '1d' $arq_comp #Elimina a primeira linha que foi lida do arquivo.
echo $var #Exibe a linha copiada
sleep 1 #Espera um seg. fique a vontade para comentar esta linha.
done #Fecha o Loop
rm -f $arq_comp #Apaga arquivo de comparação, não há problema se não apagar, pois será sobrescrita na próxima exec do programa
echo "Pastas sincronizadas com sucesso!!!" #Mensagem de sucesso, pode ser removida também
else
echo "Pastas já sincronizadas!!!" #caso os arquivos já estejam sincronizados, exibe esta mensagem
rm -f $arq_comp #Apaga arquivo de comparação temporário
fi
exit
[2] Comentário enviado por neliobjr em 07/10/2008 - 11:07h
Pq fica muito simples e eu não gosto de coisas simples. rsrsrs
Pq o arquivo pode ser alterado na pasta origem, e não na pasta dest, e eu não quero que sobrescreva na pasta dest o arq alterado na pasta origem. E sim copie só os que faltam.
Agora se tiver uma opção, que copie só os que faltam sem alterar os que são mais recentes, fiz tudo em vão, mas desconheço.