Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Comparar pasta origem com pasta destino e copiar os arquivos que faltam
Linux user
Publicado por nelio em 06/10/2008

Login: neliobjr, 31734 pontos
[ Hits: 5436 ]

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


Outras dicas deste autor
Nenhuma dica encontrada.

Leitura recomendada
   Dica Linux recomendada Renomeando imagens de acordo com a resolução
   Dica Linux recomendada Pacman - Turbinado com Aria2c
   Dica Linux recomendada Trocando letrinhas em segundos (sed)
   Dica Linux recomendada Montando partição Windows automaticamente
   Dica Linux recomendada Kermit e comandos AT

Comentários
[1] Comentário enviado por m4rc310 em 07/10/2008 - 10:07h:

Por que você não usa "cp -u" ?

-u, --update
copy only when the SOURCE file is newer than the destination file or when the destination file is missing

Assim só é copiado quando o arquivo fonte é mais recente que o arquivo destino ou quando o aquivo destino não existe.

[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.

[3] Comentário enviado por volcom em 09/09/2009 - 14:06h:

Pode usar também o rsync:

rsync [opções] [origem] [destino]

rsync --help

ou

man rsync

Abraço!


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.