Ver Feed RSS

acris

Sincronizar pastas de dois micros usando uma pendrive

Avalie este Post de Blog
O problema é simples: tenho um micro no trabalho e um em casa, mas uso os dois para fazer tarefas semelhantes, portanto tenho arquivos que começo a mexer no trabalho e continuo mexendo em casa. Todos os dias. Comecei aquela doideira de ficar salvando tudo na pendrive (pen é caneta: feminino), cola daqui, copia lá, e pimba! loguinho descobri que num dia bem atarefado eu jamais lembraria de atualizar de um lado pra outro todos os arquivos em que mexesse.
A solução foi fazer um script para rodar no udev que atualizasse as pastas do micro quando a pendrive fosse nele conectada. E, antes de ir embora de um lugar para outro, rodar no shell outro script que fizesse o caminho inverso.

Estou na fase da parte-1 (segundo artigo parte-1 da semana...).
Essa justifica-se: o script que vou mostrar aqui é bem mais simplezinho do que poderia ser, mas está funcionando. Tive muita ajuda do leleobhz para fazer isso. Ele acha que ainda tem muita gambi no script, que falta pelo menos uma interface grafica que avise o usuario sobre o andamento do rsync, que avise quando acabou. Mas isso ainda não ficou pronto e, como eu tinha que fazer a maratona já, decidi ficar com esse por enquanto. Quando o outro ficar pronto, coloco aqui.

Evidentemente a primeira coisa necessária é ter os dois micros com linux (debian, no caso ubuntu) e ter privilégio de root nos dois.

Vamos começar fazendo o script para colocar no udev. O que é o udev? é o gerenciador de dispositivos. No diretório /etc/udev/rules.d/ você encontra várias regras que o udev varre quando detecta um novo dispositivo. Todas as regras começam com um número, que indica a seqüência de execução, e terminam com .rules. Bom, achei bom não colocar a minha regra nem muito no começo, nem muito no fim, por receio (sem comprovação, confesso) de causar qualquer problema no sistema. Por isso chamei minha regra de 60-sonyRsyncAut.rules. Sony porque minha pendrive é Sony, Rsync porque é o comando que uso para sincronizar os conteúdos e Aut porque automatiza o processo. Enfim, dê o nome que quiser

O comando que deve entrar nesse script informa qual o dispositivo. Para isso, você deve obter informação de ID da sua pendrive, para que o script só funcione com ela. Você consegue essa informação com o comando:

$ udevinfo -q all -n /dev/sdc1

Onde sdc1 deve corresponder à pendrive.

Procure a linha que começa com E: ID_FS_UUID= e copie o número depois do = (vamos dizer que eh 1111 para fins de exemplo):

E: ID_FS_UUID="1111"

Então digite no seu script:

SUBSYSTEMS=="usb", ATTRS{serial}=="1111", SYMLINK+="pendrive", GROUP="<seugrupo>", RUN+="/opt/sonyRsyncAutScript.sh"


Substitua <seugrupo> pelo nome de usuário e 1111 pelo número da sua pendrive. Salve o script na pasta /etc/udev/rules.d/ e dê permissão de escrita e execução com o comando:

$ chmod a+rw /etc/udev/rules.d/60-nomedaregra.rules

Agora crie o arquivo de script, que chamei de sonyRsyncAutScript.sh. Voce pode mudar esse nome, mas não esqueça de alterar no arquivo do udev. Copio abaixo o conteúdo do arquivo com os devidos comentários. Coloquei 3 pastas para exemplo, mas você pode colocar quantas quiser:

# cria o diretório para montar a particao caso ele nao exista
mkdir /media/pendrive/

# monta a particao
mount /dev/pendrive /media/pendrive/

#cria os diretórios de destino caso não existam
mkdir -p /caminhodapasta1noseumicro/pasta1
mkdir -p /caminhodapasta2noseumicro/pasta2
mkdir -p /caminhodapasta3noseumicro/pasta3


#faz a sincrizacao do conteudo das pastas
rsync -avuz /media/pendrive/pasta1/
/caminhodapasta1noseumicro/pasta1/
rsync -avuz /media/pendrive/pasta2//caminhodapasta2noseumicro/pasta2/
rsync -avuz /media/pendrive/pasta3/ /caminhodapasta3noseumicro/pasta3/


# desmonta a particao
umount /media/pendrive/

#apaga o diretorio provisorio
rmdir /media/pendrive/


Cuidado para não esquecer as barras finais depois de todas as pastas no rsync, isso pode dar uma confusão danada.

Salve esse arquivo no /opt/ e de as mesmas permissões que deu para o outro.

Feito isso, sempre que você colocar a dita pendrive no micro, o conteúdo dela vai atualizar o conteúdo do seu micro. Nada será deletado, somente acrescidos os arquivos inexistentes no destino e atualizados os mais velhos no destino.

Tome o cuidado de mudar as pastas, se for o caso, quando fizer o mesmo procedimento para o segundo micro.

Agora vamos fazer um script para rodar antes de retirar a pendrive quando voce for sair de um micro para ir para o outro.

Crie um arquivo que chamei de sonyRsyncAutScript-SalvaNaPendrive.sh. Eu salvei no /opt.

O conteúdo dele será:

# cria o diretorio para montar a particao casa ele nao exista
mkdir /media/pen/

# monta a particao. VERIFIQUE ANTES QUAL O NOME DO DISPOSITIVO, que deve ser informado ao rodar o script na linha de comando
mount /dev/$1 /media/pen/

#faz a sincrozacao do conteudo das pastas
rsync -avuz /caminhodapasta1noseumicro/pasta1/ /media/pen/pasta1/
rsync -avuz/caminhodapasta2noseumicro/pasta2/ /media/pen/pasta2/
rsync -avuz/caminhodapasta3noseumicro/pasta3/ /media/pen/pasta3/
#só por desencargo de consciencia...
sync

# desmonta a particao
umount /media/pen/

#apaga o diretorio provisorio
rmdir /media/pen/

# aviso de que o script acabou:
echo PENDRIVE ATUALIZADA!!! Pode retirar a pendrive se desejar


Para rodar, entre no console, vá até a pasta e digite os seguintes comandos, imediatamente antes de retirar a pendrive:

$ sudo cd /opt/
$ sudo /bin/bash sonyRsyncAutScript-SalvaNaPendrive.sh sdc1

Onde sdc1 é o nome da pendrive no /dev/.
Aguarde aparecer no console a mensagem final:

$ PENDRIVE ATUALIZADA!!! Pode retirar a pendrive se desejar

Então o processo fica bem mais simples: quando chego num dos micros, simplesmente conecto a pendrive e em pouco tempo o micro contém os arquivos atualizados conforme os do outro. Quando vou embora, rodo o script e rapidinho tudo que fiz de novo vai para a pendrive.

Cuidado importante: a soma do conteúdo das pastas evidentemente não pode ser maior do que o espaço da pendrive. Para saber o tamano das pastas, dê um comando:

$ du -sh /caminhodapasta/pasta/

E some o resultado de todas elas.
Se tudo der certo, a parte 2 deste artigo vai permitir trabalhar com uma pendrive com mais de uma partição e vai ter mensagens gráficas sobre o andamento.

Por enquanto, bom proveito!

Atualizado 11-03-2009 em 21:05 por acris

Categorias
Não Categorizado

Comentários

Página 1 de 2 12 ÚltimoÚltimo
  1. Avatar de Magnun
    Muito bom acris!! Sempre mandando bem!! mas tenho uma notícia pra você!!

    Dropbox! Foi a solução pra esse mesmo problema que eu tinha! Vc instala ele (tem pra linux, windows e mac) ele cria uma pasta que se comporta como um repositório svn. Tem controle de versões e tudo... E cada vez que você altera algo ele faz a diferença incremental.

    Instalei no meu trampo (windows) e em casa (ubuntu). Altero algo no trabalho, quando chego em caso o arquivo já ta atualizado Trabalho nos meus projetos dos 2 lugares sem problema nenhum. Sem ter que ficar usando pendrive. Quer coisa melhor?! Ainda tem integração com o nautilus!!! Só vendo pra crer...

    Dentre essas funcionalidades, tem outras bem legais! Como pasta pública. Você copia alguma coisa pra pasta pública e clica com o botão direito copia link e manda pra alguém! Muito mais rápido que anexo de e-mail! Mas o mais legal é o compartilhamento de pastas entre usuários do Dropbox.

    Não vou escrever muito porque se não vai ficar enorme isso... Assista o vídeo no site: Dropbox - Home - Secure backup, sync and sharing made easy.

    Até mais...
  2. Avatar de acris
    parece muito interessante mesmo (e extremamente prático), mas me senti insegura.
    É free mas não é opensource... Vou confiar meus arquivos pra uma empresa que nem conheço? Será que não existe um opensource?
    E na licença diz que eles tem o direito de vasculhar seus arquivos para garantir que você não esteja fazendo nada ilegal... Eu não faço nada ilegal, mas nem meu namorado mexe nos meus arquivos.
    Acho que dá pra usar para algumas coisas, mas eu não usaria para tudo.
    Por exemplo, é bem interessante para fazer trabalhos coletivos (quando várias pessoas estão mexendo num projeto, por exemplo), pois ele, como o wiki mas com muito mais agilidade e simplicidade, registra todas as mudanças e permite que sejam desfeitas.
    Claro, opinião de paranóica. Boa dica. Valeu!
    Atualizado 12-03-2009 em 06:53 por acris
  3. Avatar de josir
    Muito boa a dica Cris!

    Sobre o Dropbox: realmente é um software fantástico - uso ele direto. Mas o colega esqueceu que não é todo mundo que tem banda larga em casa...

    Josir
  4. Avatar de Magnun
    Isso é! rsrsrs... Banda larga não é pra todo mundo ainda!

    Quanto a segurança, entendo sua neurose! Perfeitamente normal... Uso mais isso pra compartilhar materiais de estudo, imagens (links públicos), arquivos de configuração e projetos que estou desenvolvendo!

    Infelizmente desconheço algo opensource! Mas não é nada impossível de criar... É só ter um servidor dedicado e um IP válido! O resto é por conta do desenvolvedor!

    Até mais...
  5. Avatar de acris
    Tinha esquecido do detalhe da banda larga... Embora isso não seja problema para mim.

    Agora, Magnun, precisa de um servidor dedicado porque? Para ter acesso ssh?
    E o IP válido nao precisa ser fixo, precisa? Quero dizer: eu poderia usar no meu link da way, imagino, mesmo que eles mudem o ip toda hora, não?
  6. Avatar de Magnun
    O servidor dedicado seria para armazenar os arquivos... Sim, você pode usar um no-ip da vida. Ai é só fazer um daemon que monitore os arquivos de uma certa pasta. Caso haja mudanças executa um rsync ou se quiser utilizar controle de versão um svn. Nada que um "svn add xxx; svn update; svn commit" não resolva!

    Existem servidores de SVN, bazar, entre outros gratis por ai. Mas geralmente são voltados para projetos como o googlecode, sourceforge, lauchpad. Se existisse uma opção de "projeto privado" daria para usar!
  7. Avatar de acris
    Magnun, Essa questao do servidor dedicado me preocupa. Eu fiz o que coloquei nesse artigo pensando em usuarios normais. Eu até posso fazer do meu micro na facu um servidor dedicado se quiser, ele tem ip fixo e posso deixa-lo logado o tempo todo, mas isso resolveria o problema de bem poucas pessoas (quem mais tem isso?). Entao me pergunto se é o caso de gastar o tempo nisso, ou seja, criar o tal sistema opensource, pois parece que só vai servir a admins e devels, basicamente.
    De fato, seria legar achar uma alternativa a esse sistema do meu artigo...
  8. Avatar de Magnun
    Claro, concordo com você! Não atende a necessidade de pessoas comuns! mas como joguei a ideia do DropBox e você questionou o "opensorcismo", eu expliquei como poderia ser feito uma "versão" opensource!

    Quanto a uma alternativa a seu artigo, acredito que não existe! Pois é realmente uma ótima solução! Eu já havia pensado em fazer algo do tipo! Mas acabei desistindo porque achei o DropBox e ele atendeu minhas necessidades!

    Mas se vocês estiver pensando em levar o assunto do seu artigo a sério, estou disposto a tentar ajudar! Mas acho que eu só seria útil em torná-lo mais userfrendly! Que tal uma interface GTK pra ele?? Poderiamos até colocar ele no sistem tray e ele dá a opção de ejetar a pendrive, já fazendo o sincronismo!

    Bem, são só idéias
  9. Avatar de Freicaneca
    Gostaria só de comentar a parte que fala que pendrive é feminino pois pen é caneta em inglês e caneta é feminino... Pois bem, no inglês não temos gênero para coisas por isso pendrive é uma coisa e lá não tem gênero, acontece que aqui no Português sim caneta é feminino mas não estamos falando de uma caneta e sim de um aparelhinho portátil de armazenar dados que aqui no brasil tmbm chamamos de pendrive, e digo mais é: O PENDRIVE, é UM PENDRIVE.
    Dizem que quem tem boca fala o que quer e vejo que o povo gosta de inventar contradições apenas pra bagunçar mais o que não tem ordem!

    Ufa, desabafei!

    PS. Desculpa ser no seu post pois eu tenho visto esse negocio de "a pendrive" em muito lugar e fico me remoendo cada vez que vejo.
  10. Avatar de Magnun
    Olá acris!! Vou ressuscitar esse post

    Acabei de achar: https://ubuntuone.com/

    Ainda não testei mas pelo que vi é um "DropBox" da Canonical (sob a licença GPLv3 e Creative Commons) mas parece que é só pra Ubuntu 9.04.

    Até mais...
Página 1 de 2 12 ÚltimoÚltimo

+ Enviar Comentário