|
![]() |
||
Como sincronizar 2 pastas, incluindo arquivos deletados, usando rsync?
|
||
. Nós temos 753.928 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.
![]() |
|
|
Opções do Tópico |
|
|
#1 (permalink) |
|
Newbie
Registrado em: May 2006
Mensagens: 10
Reputação: 0
![]() |
Procurando respostas para minha dúvida, acessei o seguinte tópico: Como sincronizar 2 pastas (diretórios)?
Lá e em outros lugares da Web há muitas informações sobre o rsync, sendo que cheguei a configurá-lo e utilizá-lo com relativo sucesso. Passada a minha fase de testes, resolvi elaborar um pequeno script, com a ajuda do que li por aí. O script seria algo assim: Código:
Código:
Ouvi falar em algumas configurações em SSH, mas isso me pareceu muito complexo para o sistema amador aqui do escritório. Além do mais, eu não sou o responsável pela rede e não poderia ficar fazendo alterações no servidor. Assim, seguindo as informações desse fórum: http://ubuntuforums.org/showthread.php?t=288534, eu montei a pasta que estava no servidor em /media/Servidor. Mas, como o bom é sempre complicar, eu queria poder trabalhar com o meu notebook em casa, tendo todos os arquivos do escritório à disposição. Assim, eu tive a idéia de fazer um "sudo rsync -Cravzp /media/Servidor/ /home/magnum/Documentos". Funcionou perfeitamente. O "-Cravzp" eu tirei da internet, sem ler o man rsync. Mas, como é sempre bom complicar mais um pouquinho, eu queria que os arquivos que eu tivesse feito no meu notebook em minha casa fossem mandados para o Servidor. Simples, não? Bastava fazer um "sudo rsync -ravzuptP /home/magnum/Documentos /media/Servidor/". Lendo o man rsync, eu resolvi alterar as opções "-Cravzp", retirando o "C", para que até os *.exe fossem sincronizados, e acrescentando "u", "t" e "P", para, entre outros motivos, evitar que um arquivo mais antigo substituísse um mais novo, alterado no servidor enquanto eu estava em casa. Estou fazendo os testes, rascunhando o script, e tudo parece perfeito. Mas, para poder complicar mais, eu vi que era necessário que um arquivo deletado no servidor fosse deletado no meu notebook. E eu não queria o contrário. Se eu acidentalmente deletasse um arquivo no notebook, eu não ia querer correr o risco de em uma sincronia automática o meu notebook excluísse o arquivo do servidor. Assim, eu iria trabalhar desse modo: Eu só iria usar os arquivos locais, do /home/magnum/Documentos. Se fosse preciso deletar de verdade algum arquivo, eu iria no servidor, pensaria três vezes, e deletaria o infeliz do arquivo. Continua simples, não é? Basta incluir o "--delete" na sincronia do servidor para o meu notebook. Para evitar que o servidor deletasse os novos arquivos criados pelo meu notebook, eu coloquei a linha de sincronia do meu notebook para o servidor antes, sem o "--delete", obviamente. Logo depois vem a linha do servidor para o notebook, com o "--delete". Desse modo, em um primeiro momento, os meus novos arquivos seriam levados para o servidor. Em um segundo momento, os novos arquivos do servidor seriam levados para o meu notebook, mais a ordem para deletar o que tivesse sido deletado no servidor. Aí é que está o problema... para esse script funcionar, a exclusão de arquivos teria que acontecer necessariamente entre o primeiro e o segundo momento. Se a exclusão acontecer depois do segundo momento, quando o script for rodado de novo ele vai jogar os arquivos que estão no meu notebook mas tinham sido deletados do servidor de volta para o servidor. O problema é que eu não posso chegar para o pessoal do escritório e falar que ninguém mais pode deletar arquivo do servidor. Isso acontece a todo momento e tem que acontecer. Assim, especialmente se eu colocar o script para rodar de hora em hora, ou mesmo uma vez por dia, eu vou acabar "ressuscitando" os arquivos que tinham sido deletados no servidor. Só eu que vou morrer nessa história... Só consegui pensar em uma solução "teórica", mas nem sei se isso é possível... A idéia é "descobrir" um comando do rsync que criasse um registro dos arquivos do servidor. Quando o arquivo fosse deletado no servidor, o rsync, milagrosamente, manteria o registro do tamanho e hora da última modificação do arquivo. Assim, se o meu notebook tentasse enviar um arquivo que foi deletado no servidor, esse envio seria negado, a não ser que o arquivo deletado tivesse sido alterado no meu notebook. Apenas nesse caso, a versão mais nova do meu notebook iria parar no servidor. Desse modo, se o notebook não conseguir restaurar o arquivo deletado, quando for executada a 2ª linha do rsync, com o comando "--delete" do servidor para o notebook, o arquivo finalmente seria deletado no meu notebook e tudo estaria resolvido. Perfeito, não é? Como tem muita gente boa neste fórum, tenho certeza que logo logo vai aparecer uma solução simples e boba! Ou pelo menos a recomendação de usar um outro programa... Desculpem o longo texto, mas achei importante deixar claro qual é o meu problema para evitar que me sejam passadas soluções que não tem a ver com o que preciso. Quanto ao local do tópico, escolhi a mesma categoria do Como sincronizar 2 pastas (diretórios)? que foi meu ponto de partida. Além disso, o rsync é um aplicativo do GNU-Linux. Peço desculpas se tiver me equivocado. Um abraço e, desde já, agradeço. |
|
|
|
|
|
#2 (permalink) |
|
Membro Senior
|
Ja penso em usar o SVN? atende o que vc quer. abraço t+
__________________
|Intel i7 920 / Zalman CNPS FLEX / Corsair Dominator 1600 mhz / CM-690 / Sapphire 5770 vapor-x| |
|
|
|
|
|
#3 (permalink) |
|
Newbie
Registrado em: May 2006
Localização: Rio de Janeiro
Mensagens: 16
Reputação: 0
![]() |
Existe o Unison, ele é muito bom e simples. Serve para sincronizar pastas, vale a pena pelo menos uma googlada sobre ele.
__________________
Kurumin Linux! Eu já usei um
|
|
|
|
|
|
#4 (permalink) |
|
Ubbergeek
Registrado em: Jul 2006
Mensagens: 4.806
Reputação: 67
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Já que é uma coisa assim manual, já tentou instalar o krusader? É um gerenciador de arquivos com duas janelas fixas e que traz uma função de sincronização; só que, antes de fazer as copias, ele te mostra uma listagem dos arquivos a serem copiados e você pode "desligar" alguns.
__________________
|
|
|
|
|
|
#5 (permalink) |
|
Newbie
Registrado em: May 2006
Mensagens: 10
Reputação: 0
![]() |
Desculpem a demora no retorno, mas ainda estou testando as opções apresentadas.
Após chegar a alguma conclusão, vou voltar ao tópico e comentar. Mas já adianto que descobri que o Unison se propõe a fazer exatamente o que eu preciso. Como padrão, o Unison, em vez de restaurar um arquivo deletado em uma das pastas, deleta este arquivo na outra pasta. Há dois problemas que eu preciso resolver. (1) nos meus testes preliminares, o Unison, além de demorar mais que o rsync na primeira sincronia, demora muito mais ainda que o rsync nas próximas sincronias. Como eu vou precisar sincronizar diariamente mais de 20.000 arquivos, eu comecei a ficar preocupado, mas ainda não deu para fazer um teste definitivo (2) o rsync está muito melhor documentado que o Unison. Estou tendo muita dificuldade em configurar opções no modo texto, como, por exemplo, alterar o padrão do Unison para que um arquivo deletado no notebook não seja deletado no Servidor. Ainda não deu tempo de brincar com o SVN e com o krusader, mas também pretendo ver se são boas alternativas para o que eu preciso. Valeu demais pelas dicas! Um grande abraço! |
|
|
|
|
|
#6 (permalink) |
|
Novo Membro
Registrado em: Nov 2002
Mensagens: 134
Reputação: 19
![]() |
O grsync é uma interface gráfica em GTK para o rsync... é bem simples de configurar e você pode fazer uma simulação do que seria feito antes de sincronizar os arquivos.
Boa sorte |
|
|
|
![]() |
| Opções do Tópico | |
|
|