Updates from junho, 2011 Toggle Comment Threads | Keyboard Shortcuts

  • nelas 16:46 on 2011/06/25 Permalink | Reply
    Tags: api, diversidade, django, mendeley, python, referências bibliográficas, taxonomia   

    Bibliografia viva 

    Num sábado de manhã de algumas semanas atrás eu caí de paraquedas (online) no Hack4Knowledge, um encontro para criar aplicativos, ferramentas e remisturas que aproveitem os bancos de dados existentes para inovar e enriquecer a criação e disseminação do conhecimento.

    Eu já estava fazendo uns testes com o API do Mendeley e resolvi aproveitar a oportunidade para por em prática uma idéia: agregar referências bibliográficas relacionadas com um determinado táxon. Não é uma idéia particularmente inédita nem difere muito de você colocar o nome de um táxon no google ou scopus, mas o fato do banco de dados do Mendeley ser construído por coleções dos usuários permite extrair algumas informações interessantes. Por exemplo, descobrir quais são os artigos mais populares ou criar um trending topics com os grupos do momento baseado na quantidade de leitores e número de publicações.

    Living Bibliography Home Page

    Página inicial do Living Bibliography

    Possuir os dados de artigos (independente da fonte) também possibilita extrair informações interessantes como autores mais ativos em determinado táxon, rede de colaboradores, variação anual no número de artigos relacionados, tópicos mais estudados em cada grupo, etc. Integrando tudo isso e usando ferramentas para visualização de dados complexos seria possível, por exemplo, “ver” buracos no conhecimento ou acompanhar a história do estudo de um organismo.

    Imagine se todos os artigos estivessem acessíveis livremente e contivessem informações (metadados) sobre os organismos em questão como informações taxonômicas, ocorrência, coletas, sequências, citações com marcação semântica, tópicos abordados, hipóteses para testar, metodologias, dados brutos, etc. Em instantes qualquer pessoa poderia ter um resumo do conhecimento atual sobre um organismo. Especialmente interessante para definir diretrizes para a pesquisa e evitar gastos de recursos com os mesmos erros; uma otimização da ciência. Isso sem contar na possibilidade de anexar observações, anotações, discussões, questões não resolvidas e outras atividades colaborativas.

    Bom, depois de fazer um modelinho da idéia acabei de colocar as funções básicas do agregador para funcionar. Não tem nada do que escrevi acima, apenas uma interface de busca onde você pode usar o nome científico ou nome popular do organismo (em inglês) que você quer ver e uma página por táxon com a lista de referências relacionadas e alguns controles de ordenação. Se o táxon não estiver no banco ele vai buscar as referências na hora, portanto, é necessário esperar um pouco e recarregar a página (pelo menos até eu dar um jeitinho nisso).

    Living Bibliography Taxon Page

    Página de um táxon no Living Bibliography

    Quem se interessar pode testar o Living Bibliography no livingbib.organelas.com. Só lembrando que é totalmente experimental, nada garantido que seus artigos favoritos aparecerão ou que as informações estejam corretas (ainda tem muito artigo duplicado, nome de autor errado, títulos mal formatados, revistas trocadas, e afins no Mendeley). Não sei o quanto vou poder me dedicar, mas o código é aberto e adoraria ouvir idéias e sugestões :)

     
  • nelas 23:59 on 2010/05/01 Permalink | Reply
    Tags:   

    Mestre em LaTeX v0.2 

      Acabo de lançar uma nova versão do Mestre em LaTeX! Fiz uma boa limpeza no código e corrigi os poucos (mas importantes) bugs que haviam sido reportados. As principais mudanças foram a melhoria da formatação dos elementos pré-textuais (capa até sumário), o ajuste para que seções comecem sempre nas páginas ímpares e re-estruturação do texto. Veja mais detalhes sobre as atualizações desta versão aqui. Para baixar:

      Mestre em LaTeX v0.2 – 2010-05-01 [zip com 502kb]

      ou visite o site para mais informações: http://code.google.com/p/mestre-em-latex/

      Para a próxima versão deixarei o texto mais didático, já que ficou um pouco bagunçado depois do rearranjo, e adequarei o documento de acordo com as normas da ABNT para a apresentação de documentos acadêmicos.

      Desde 29 de janeiro de 2009 a primeira versão foi baixada 767 vezes e pelo menos 2 dissertações foram defendidas com sucesso (essa do gepeto e essa do zué; além da minha ;) ). Se alguém tiver notícia de mais alguma me avise. Agradeço a todos que me relataram http://code.google.com/p/mestre-em-latex/issues/list">bugs ou me escreveram, mesmo que só para dizer que o MeL* havia funcionado (ou não) nos seus sistemas. Continuem mandando sugestões!

      * apelido carinhoso

       
      • Paul 6:50 on 2010/05/02 Permalink | Reply

        Alguns pequenos comentários:

        1- dê uma olhada no pacote SIunits, é muito bom. É como uma extensão do units. Preste atenção nas incopatibilidades com o amsmath e pstricks… (isto está explicado no pdf do SIunits) basicamente ele define duas funções que já existem nestes pacotes \square \grey (se eu nao me engando). Para corrigir isto, basta colocar uns options no includepackage para que ele não redefina as funções.

        2- Quanto à ifenização. Eu não gosto da hifenização em pt. Já encontrei muita separação silábica errada. Não sei como está isso hoje em dia, não sei se corrigiram. Nevertheless, acho que separação silábica no final da linha é um recurso da época que usávamos máquina de escrever e, em que quando chegávamos no final da linha, quebrávamos a palavra (pq não tinha um backspace na máquina de escrever =) ) O que eu faço nos meus documentos é usar

        \usepackage[none]{hyphenat}

        Com isto, alguns problemas de justificação de final de linha vai dar problema. Para corrigir isto, eu uso

        \sloppy

        no preâmbulo do documento.

        3- Gostei dos links na legenda da figura 2.3! =D

        4- Há a opção para inserir referências por ordem numérica?

        5- não conhecia esse booktable

        6- Makefile só com pdflatex? e se o cara usa só imagens .eps/.ps/.pdf?

        Good Job soldier!

      • Paul 7:12 on 2010/05/02 Permalink | Reply

        continuando…

        7- Eu costumo definir alguns macros para facilitar o meu trabalho, assim fica mais fácil adicionar referências:

        \newcommand{\figref}[1]{Figura~\ref{#1}}
        \newcommand{\tabref}[1]{tabela~\ref{#1}}
        \newcommand{\secref}[1]{seção~\ref{#1}}
        \newcommand{\apref}[1]{apêndice~\ref{#1}}

        e também para inserir figuras. assim economizo tempo e o .tex fica mais limpinho um pouco:

        o comando \imagem serve para inserir figuras de forma rápida:

        \imagem{banana.eps}{Esta é a legenda.}{fig:este_eh_o_label}{10cm}

        \newcommand{\imagem}[4]{\begin{figure}[H]
        \center
        \includegraphics[width=#4]{./imagens/#1}
        \caption{#2}\label{#3}
        \end{figure}}

        só coloco a opcao de tamanho para a largura, pq julgo que seja o mais comum.

        o \imagemg:

        \newcommand{\imagemg}[5]{\begin{figure}[H]
        \center
        \includegraphics[width=#4]{./imagens/#1}
        \caption[#5]{#2}\label{#3}
        \end{figure}}

        é a mesma coisa, mas tem um caption extra. este caption extra é uma versao menor do caption para ficar na lista de figuras:

        \imagem{banana.eps}{Esta é a legenda longa e cheia de detalhes a respeito da foto de uma banana, que fica horrível na lista de figuras pois é muito comprida e cheira de palavras.}{fig:este_eh_o_label}{10cm}{Foto da Banana}

        8- Note que as imagens estão dentro de um subdiretorio do documento ./imagens. Talvez fosse legal citar algos desse tipo no MeL. Pode ser que o usuário comum não saiba desta possibilidade de organizar as imagens, deixar as imagens separadas ajuda bastante!

        9- Ah, vale a pena tbm falar para NÃO colocar espaço em nome de arquivos, NEM acentos. a nao ser que o cara queira problemas de compatipilidade entre sistemas, eu um estiver usando utf-8 e outro iso8859-1. =D

        9- Avise também que vc está usando aí nos seus .tex o encoding utf-8! Eu abri aqui e tava como iso8859-1… aí já viu =)

      • Paul 7:21 on 2010/05/02 Permalink | Reply

        mais novas idéias!! =D

        acabei de ter uma idéia: pq não adicionar no Makefile (ou em algum tools.sh) algumas ferramentas como por exemplo um conversor de formato de imagens:
        1) jpg -> eps
        2) eps -> jpg
        3) jpg -> png

        imagino que o convert do ImageMagick resolve isso sem problemas. O script poderia ser algo que procura recursivamente as figuras, ou faz em uma lista especificada de figuras. Se vc quiser, eu escrevo pra vc este script. Deve ter outros tools interessantes tbm, mas afora não to conseguindo pensar ema nada. =P

        outro comment:

        para organizar meu .bib, eu uso o jabref. (http://jabref.sourceforge.net/)
        esse programinha aí é mto legal e tem muitos features legais, como procura online (apesar que nunca usei). Deixa inclusive vc linkar o documento a referência, assim vc nao precisa procurar no seu computador todo onde está o maldito pdf da referência… =D
        Eu tenho aqui no meu computador um único .bib central, que chamo de biblioteca.bib.

      • Paul 7:28 on 2010/05/02 Permalink | Reply

        Mais idéias (tá, esse é o último, prometo)

        olhei o seu pdf compilado e o .tex e tudo mais té bem explicadinho e tal. Talvez fosse legal preparar um documentinho “boas práticas no latex para noobs” e por junto do MeL, com dicas do tipo:

        - jabref (ou similar)
        - que é legal organizar as imagens em diretorios
        - que formato de imagem usar
        - pq usar imagens .eps em gráficos

        essas coisinhas que são mto simples, mas que, em geral, não são observadas por aí e temos que aprender por conta.

        Posso ajudar nisso se vc quiser.

        bom, acho que meus comentários acabam aqui…. ou não XD

      • Paul 10:37 on 2010/05/02 Permalink | Reply

        ok, sou eu de novo… rsrs

        1-) tava olhando o meta.tex e o pre.tex …

        achei um pouco complicado, para o usuário nao acostumado com latex, para colocar o titulo da tese, area da pesquisa, nome, etc…

        pelo que vi, o cara tem q cololcar essas coisas no meta.tex nao é?

        pq vc nao faz assim (exemplo para o autor, o resto é igualzinho):

        no seu meta.tex vc define
        \newcommand{\autor}[1]{\renewcommand{\MeLautorNome}{#1}}

        aí o cara, no .tex dele, (nao no pre.tex) pode simplesmente escrever

        \autor{Jośe da Silva Xavier}

        pronto, agora no seu pre.tex, vc pode mandar colocar na pagina de titulo simplesmente \MeLautorNome

        obs:
        não esqueca que tbm pode ter co-orientador

        2-)

        2-a) pq vc nao cria um comando para a capa, folha de rosto, folha de aprovacao, etc?

        \capa
        \folhaderosto
        \fichaCalatografica

        para a ficha catalografica, o que eu fiz pra poli é:

        \newcommand{\permissaocopia}[1]{\newcommand{\permissaocopia}{#1}}

        \newcommand{\fichacatalografica}[1]{
        \begin{titlepage}
        \espaco{1.1}

        \hspace{-2.5cm}
        \begin{minipage}{1.0\textwidth}
        \begin{espacosimples}
        \ifthenelse{\equal{\permissaocopia}{sim}}{\MakeUppercase{autorizo a reprodução e divulgação total ou parcial
        deste trabalho, por qualquer meio convencional ou eletrônico, para fins de estudo e pesquisa, desde
        que citada a fonte.}}{não autorizo a reprodução e divulgação total ou parcial
        deste trabalho, por qualquer meio convencional ou eletrônico.}
        \end{espacosimples}
        \end{minipage}

        \small
        \vspace*{13cm}
        \hspace{-2.5cm}
        \begin{minipage}{1.0\textwidth}
        \begin{center}
        \begin{tabular}{c}
        {\normalsize \bf \MakeUppercase{Ficha catalográfica}}\\\\
        \end{tabular}
        #1
        \end{center}
        \end{minipage}
        \end{titlepage}
        }

        para chamar a bagaca:

        \fichacatalografica{\begin{tabular}{|l|} \hline]\\
        tabela\\

        tabela\\
        \hline
        \end{tabular}
        } (note que o parametro que estou passando eh uma tabela)

        e pra configurar esse \permissaocopia

        \permissaocopia{sim} % ou nao

        2-b) nao sei se o pre.tex é necessário. Por que vc nao trabalha criando uns environments no meta.tex? por exemplo para as dedicatorias:

        \newenvironment{dedicatoria}%
        {
        \noindent{\LARGE\textbf{Agradecimentos}}
        \begin{minipage}{0.3\textwidth}
        \vspace{14cm}
        \doublespacing
        }
        {
        \end{minipage}
        \newpage
        }

        assim, o cara no texto dele pode escrever

        \begin{dedicatoria}
        Aos meus pais e irmãos.

        Dedico também ao papai noel por me dar presentes, etc…
        \end{dedicatoria}

        vc pode tbm definir parametros no environment, como no caso da epigrafe, cujo parametro é o nome do autor, que deve ser colocado abaixo do texto, um pouquinho para a direita (este exemplo funfa, eu testei aqui colocando no seu meta.tex) Fiz assim pra poli:

        \newsavebox{\nome}
        \newenvironment{epigrafeFe}[1]
        {
        \sbox{\nome}{\textit{#1}}
        \begin{center}
        \begin{minipage}{0.7\textwidth}
        \vspace{4.5cm}
        }
        {\begin{flushright}
        \usebox{\nome}
        \end{flushright}
        \end{minipage}
        \end{center}
        \newpage
        }

        e o cara sé escreve no texto dele algo do tipo:

        \begin{epigrafe}{Albert Einstein (1879$-$1955)}
        “Tenha em mente que tudo que você aprende na escola é trabalho de muitas
        gerações. Receba essa herança, honre-a, acrescente a ela e, um dia, fielmente,
        deposite-a nas mãos de seus filhos.”
        \end{epigrafe}

        obs: note que eu já coloco o \newpage dentro da definicao do environment.. assim o cara nao precisa se preocupra com isso.. rá! =D

        no final da história, o cara teria o seguinte no tex dele:

        no preambulo, ele colocaria
        \autor{José da Silva Xavier}
        \titulo{Este é o título do Trabalho}
        \areaconcentracao{Engenharia mecânica}
        \orientador[]{Prof. Dr. Bla bla}
        \coorientador[]{}
        \comentario{Dissertacao apresentada ao Instituto de Biociências da Universidade de São Paulo, para a obtenção bla bla bla}
        \instituicao{UNIVERSIDADE DE SÃO PAULO \par ESCOLA POLITÉCNICA}
        \local{São Paulo}
        \data{2010}

        \permissaocopia{sim} % ou nao

        aí no pré.tex (simplificado) dele teria algo:

        \capa
        \folhaderosto
        \folhadeaprovacao

        \begin{dedicatoria}
        bla bla bla
        \end{dedicatoria}

        \begin{epigrafe}{autor desconhecido}
        agua mole e pedra dura, tanto bate até que fura
        \end{epigrafe}

        \begin{resumopt}
        macaco
        \end{resumopt}

        \begin{resumoen}
        monkey
        \end{resumoen}

        etc…

        bom, vc pegou a idéia… deste jeito, o pre do cara fica mto mais fácil de ver.

      • nelas 22:15 on 2010/05/02 Permalink | Reply

        Paul! Valeu muito pelos comentários! Vou organizar as sugestões para acrescentar no tracker do MeL e ir incorporando.

        Você sabe mexer com mercurial? Se souber, acho que seria o jeito mais prático de ajudar, eu te coloco como colaborador do projeto e você pode editar os arquivos e submeter para o site direto. Se não também, se você quiser corrigir alguma coisa é só me mandar.

        Agora aos comentários!

        Vou checar o pacote SIunits e mais um outro (que não lembro o nome), mas que tem a mesma função. Cogitei até em tirar o units e formatar o espaço entre a unidade com o comando \, mas acabei não achando que seria tão bom.

        Nunca tive problemas com a hifenação, mas talvez não tenha reparado. De qualquer modo se aparecer algo errado dá pra ensinar o compilador com o co\-man\-do \-

        Os links da subfig são legalzinhos mesmo, mas na prática não acho muito úteis… hehe.

        Para inserir as refs em ordem númerica é só trocar o estilo no \bibliographystyle{}. Deixei apalike por padrão (tb preciso checar o que a ABNT diz…), mas se trocar funciona igual. Talvez valha a pena deixar a opção lá.

        Gosto bastante do booktable. Acho a tabela padrão bem feinha…

        Tudo do MeL fiz pensando em compilar com o pdflatex pq era o q eu estava usando, mas acho que vale a pena colocar a opção para gerar ps/dvi. Aliás a idéia de criar um Makefile é sua e ajudou muito! Até incluí o gerador de abreviaturas nele pra facilitar (já q era a parte mais “complexa” pra executar). Vi alguém usando o ifthenelse para escolher o pacote graphics dependendo se a compilação fosse latex ou pdflatex. Achei bem legal, acho que vou incorporar.

        Gostei bastante dos novos comandos para inserir os links internos e figuras. Realmente bem mais prático. Vou incluir!

        Na versão anterior as imagens estavam dentro de uma pasta própria. Nessa versão achei melhor simplificar e deixar em uma pasta só, mas a opção ainda está disponível no meta.tex! É só descomentar.

        Vou colocar a codificação em algum lugar… talvez no LEIAME?

        Eu tenho uns scripts pra converter imagens tb (imagemagick rulez), mas acho que separado do Makefile seria melhor.

        Usei o JabRef um bom tempo! Agora estou usando mais o Mendeley, que ainda não chegou lá, mas está indo bem. Mas vira e mexe ainda volto no jabref pra abrir coisas lá. Seria legal incluir dicas assim, talvez no Wiki direto, ou mesmo ao longo do texto. Acho que caberia bem.

        Criar os comandos e ambientes para limpar o pre.tex é uma idéia bem boa. Só me pergunto se o cara que olhar aquilo pela primeira vez não vai achar muito mais complicado entender como que um \capa funciona do que olhar os elementos da capa direto ali no pre.tex seguido dos outros elementos. De qualquer modo, acho que vai valer muito a pena implementar isso pq fica muito mais prático.

        Paul, obrigadão!

      • Taci 12:58 on 2010/12/10 Permalink | Reply

        Oi! Gostei muito do mestre em latex e já defendi minha qualificação de mestrado com ele. Tem dois problemas que não consigo resolver: Encontrar um estilo de bibliografia que funcione e seja em ordem numérica (mas completa, parecida com a da ABNT) e colocar figuras em outro formato que não o jpg(só consigo este, e as figuras perdem definição). Valeu!

        • nelas 9:19 on 2010/12/13 Permalink | Reply

          Olá Taci,

          Valeu! Legal, saber que você está usando o MeL.

          Para customizar o estilo das referências você pode usar o pacote custom-bib. Ele você vai gerar o arquivo bst baseado numa lista de perguntas sobre como você quer que seja o estilo.

          Você consegue usar figuras como PNG ou TIFF? Ou só JPG que funciona? No meu computador eu consigo usar todos os tipos de arquivo (incluindo figuras em PDF), menos PS e EPS. Para usar estes dois precisaria compilar com o comando latex e não pdflatex (padrão do MeL).

          Se quiser crie uma entrada na lista de bugs clicando aqui e coloque uma descrição do que está acontecendo, com detalhes de quais pacotes você está usando, em qual sistema, etc, para que eu possa achar a origem do bug.

          Abs!

      • Paul 16:56 on 2011/05/06 Permalink | Reply

        onde boto um .tex com algumas modificações que eu tinha proposto?

        • nelas 13:10 on 2011/05/08 Permalink | Reply

          Bom, você pode me mandar por email mesmo ou fazer um fork com o mercurial pelo googlecode ou pelo github. Ou eu posso te colocar como colaborar no googlecode pra vc submeter as modificações. Ve qual vc prefere! Tem meu email?

    • nelas 23:08 on 2010/01/24 Permalink | Reply
      Tags: , , , , , utilidades   

      Shell script para backup: nova versão 

        Outro dia atualizei o que faltava no meu shell script para fazer backup usando o rsync.

        Adicionei o wakeonlan para ligar a máquina remotamente (necessário descobrir o HW address da sua máquina de destino e se certificar de que é possível ligá-la remotamente — possível que tenha que ativar essa opção na BIOS), dei uma arrumadinha, incluí a opção de excluir arquivos e pastas do backup (ver abaixo) e adicionei num cron job para fazer um backup diário. Além disso, o script desliga a máquina depois do fim do backup. Aqui está:

        #!/bin/bash
        
        # Script para backup via SSH usando o rsync
        # Versão 0.8 - 2009/09/05
        
        # # # # # # Configuração # # # # # #
        
        # Mude os parâmetros abaixo, referentes ao seu sistema
        
        # Arquivo log
        LOG=/home/user0/.backup`date +%Y-%m-%d`.log
        
        # IP ou hostname da máquina de destino
        DESTINO=destino.local
        
        # Usuário no destino
        USR=user1
        
        # Diretório de destino
        DIR=/home/user1/Backup/
        
        # Diretório de origem
        SRC=/home/user0
        
        # Arquivo com lista de arquivos e diretórios
        # que não serão incluídos no backup
        EXCLUIR=/home/user0/.rsync/exclude
        
        # HW address
        HW=00:ee:dd:cc:bb:aa
        
        # # # # # # Configuração # # # # # #
        
        # # # # # # #  Funções # # # # # # #
        
        function ligada
        {
        # Checar se a máquina de destino está ligada
        echo -e "Checando se $DESTINO está ligada..."
        /bin/ping -c 1 -W 2 $DESTINO > /dev/null
        if [ "$?" -ne 0 ]; then
        return 1
        else
        return 0
        fi
        }
        
        function run_backup
        {
        HORA_INI=`date +%s`
        echo -e `date +%c` >> $LOG
        echo -e "\n$DESTINO ligado!" >> $LOG
        echo -e "Iniciando o backup...\n" >> $LOG
        rsync -ah --delete --stats --progress --log-file=$LOG --exclude-from=$EXCLUIR -e ssh $SRC $USR@$DESTINO:$DIR
        HORA_FIM=`date +%s`
        TEMPO=`expr $HORA_FIM - $HORA_INI`
        echo -e "\nBackup finalizado com sucesso!" >> $LOG
        echo -e "Duração: $TEMPO s\n" >> $LOG
        echo -e "--- // ---\n" >> $LOG
        echo -e "\nBackup finalizado com sucesso!"
        echo -e "Duração: $TEMPO s\n"
        echo -e "Consulte o log da operação em $LOG.\n"
        }
        
        # # # # # # # Funções  # # # # # # #
        
        # # # # # # # Programa # # # # # # #
        
        # Checar se a máquina de destino está ligada
        ligada
        if [ "$?" -eq "1" ]; then
        echo -e "\n$DESTINO desligado. Tentando acordá-lo..."
        wakeonlan $HW
        echo -e "\nPacote mágico enviado. Aguarde."
        sleep 70
        ligada
        if [ "$?" = "1" ]; then
        echo -e `date +%c` >> $LOG
        echo -e "\n$DESTINO desligado." >> $LOG
        echo -e "Backup não realizado\n" >> $LOG
        echo -e "--- // ---\n" >> $LOG
        echo -e "\n$DESTINO desligado."
        echo -e "Backup não realizado.\n"
        else
        echo -e "\n$DESTINO ligado! Começando o backup..."
        run_backup
        fi
        else
        echo -e "\n$DESTINO ligado! Começando o backup..."
        run_backup
        fi
        
        echo -e "Desligando o $DESTINO..."
        ssh $USR@$DESTINO 'sudo halt'
        echo -e "Pronto. Tchau!"
        
        # # # # # # # Programa # # # # # # #
        
        # # # # # # # Afazeres # # # # # # #
        #
        #	- Criar alça para quando a transferência falhar (e.g.,falta de espaço)
        

        Meu arquivo exclude, com a lista de arquivos e pastas que não serão incluídas no backup ficou assim:

        .thumbnails/
        Picasa.ini
        Thumbs.db
        .local/share/Trash/
        .cache/
        .gvfs/

         
        • Paul 14:22 on 2010/01/26 Permalink | Reply

          gostei!

        • Juliano 14:46 on 2010/06/09 Permalink | Reply

          Esse script de backup é FANTÁSTICO, PERFEITO para o que estou precisando, ele serve para estações que tenham win XP ou 7 para enviar o backup ao windows server 2008??? Valeuuuuu

        • nelas 11:01 on 2010/06/10 Permalink | Reply

          Oi Juliano, não faço idéia. Você está dizendo rodar o script por uma máquina com linux para enviar o backup para a máquina com windows? Se for isso talvez até funcione se vc tiver ssh instalado no windows (e o rsync). Agora rodar o script partir do windows acho que não funciona não… teria que portar pra outra linguagem como python ou perl.

        • Gabriel Nunes 17:17 on 2010/11/22 Permalink | Reply

          Como eu devo colocar no arquivo exclude para que não seja realizada a cópias de arquivos do tipo .mp3, .avi, etc..

          tentei de diversas formas e não funcionou.

        • nelas 16:14 on 2010/11/27 Permalink | Reply

          Oi Gabriel, é só colocar em uma nova linha: *.mp3

          Assim o comando não vai mais copiar arquivos terminados em mp3. No entanto, se vc quiser excluir os arquivos mp3 que já estiverem no destino (eg pq vc já havia rodado o rsync) basta acrescentar na linha de comando a opção –delete-excluded. Ele vai ler suas regras de exclusão e apagar estes arquivos no destino.

          Faça uns testes pra ver como funciona antes de rodar nos seus arquivos oficiais.

        • Loiro Jones 10:52 on 2011/09/13 Permalink | Reply

          Muito bom script, estou utilizando no meu servidor de arquivos para backup…

        • Loiro Jones 12:09 on 2011/09/13 Permalink | Reply

          Ótimo script… vc poderia torná-lo mais eficiente se na linha 54 “rsync -ah –delete –stats –progress –log-file=$LOG –exclude-…”, acrescentasse ao rsync a sintaxe ” rsync -Cravzup –delete –stats –progress –log-file=$LOG –exclude-from=$EXCLUIR -e ssh $SRC $USR@$DESTINO:$DIR

          ,ou seja, a sintaxe Cravzup

          C: auto-ignorar arquivos idênticos;
          -r: copiar de forma recursive, ou seja, todos os diretórios e subdiretórios no caminho especificado;
          -a: indica que estarão sendo copiados arquivos;
          -v: modo verboso, mais informações da cópia;
          -z: comprime os arquivos durante a cópia;
          – u : Update
          -p: indicador de progresso de cópia.

          Torna o backup mais eficiente…

          falows

          • nelas 21:47 on 2011/09/14 Permalink | Reply

            Valeu, legal que está usando :)

            O “-a” é equivalente à “-rlptgoD” portanto não precisaria do “-r” ou do “-p”. Na verdade o único que pode deixar mais eficiente é o “-z” que comprime os arquivos antes de enviar pela rede.

            O “-u” faz o backup pular os arquivos cuja cópia no destino está com a data de modificação mais nova. Isso é útil para fazer sincronização entre computadores, mas neste caso é um backup de uma via só, sempre do meu computador para outra máquina. Portanto, independente do arquivo ter sido modificado no destino (eg. posso ter entrado e acessado alguma coisa por ela), a cópia da minha máquina vai sobrepor.

            Já o “-p” serve para manter as permissões dos arquivos em ordem, o progresso é controlado pelo argumento “–progress”.

            Tem a lista completinha das opções do rsync aqui: http://www.samba.org/ftp/rsync/rsync.html

            Abraço

      • nelas 10:00 on 2009/08/07 Permalink | Reply
        Tags: , bash, dhcp, , , script, ,   

        Shell script para backup usando rsync e ssh em DHCP no Ubuntu 

          [Fiz uma versão nova, mais completa, deste script. Confira aqui.]

          No meu computador mantenho apenas arquivos essenciais para o trabalho da semana/mês e vou estocando tudo em discos rígidos externos progressivamente. Contudo, como eles são meio desorganizados, queria um jeito prático de fazer backup completo dos arquivos diários de trabalho.

          A solução foi criar um script em shell (bash) que fizesse uma cópia exata do meu computador para outra máquina conectada na rede local.

          Depois de uma rápida pesquisa vi que o rsync era a ferramenta que estava procurando para o trabalho. Não é preciso muito para conseguir fazer o backup com o rsync, basta usar o seguinte comando (cheque a documentação para entender os argumentos):

          rsync -ah --delete -e ssh /home/user1 user2@IPouHostname:/home/user2/Backup/
          #nota de precaução: o --delete faz com que os arquivos no destino sejam deletados, caso estejam ausentes na origem
          

          No entanto, foi preciso configurar algumas coisas para que tudo corresse bem nas duas máquinas rodando Ubuntu.

          Como minha rede local é DHCP as máquinas não tem um IP estático. Queria rodar o script sem precisar saber o IP do destino usando apenas o hostname (nome da máquina na rede). Quando tentei conectar via ssh usando o hostname original não consegui. Para funcionar é necessário simplesmente mudar o hostname da máquina de destino para hostname.local. Siga estas instruções resumidas abaixo:

          1. Abra o arquivo /etc/hosts com um editor de texto pelo terminal

            sudo vim /etc/hosts

          2. Mude a linha

            127.0.1.1 hostname

            para

            127.0.1.1 hostname.local

          3. Salve o arquivo e abra o arquivo /etc/hostname com

            sudo vim /etc/hostname

          4. Mude o hostname para hostname.local e salve
          5. Reinicie a máquina ou execute:
            1. sudo /etc/init.d/hostname.sh stop
            2. sudo /etc/init.d/hostname.sh start
            3. sudo /etc/init.d/network restart

          Com isso foi possível conectar via ssh sem precisar saber o IP, apenas com o hostname. Outra pendenguinha é que o ssh precisa da senha de usuário da máquina de destino para se conectar. Pra evitar isso e conseguir fazer o login remotamente sem precisar digitar a senha siga estes passos (isso permite com que você possa iniciar o backup sem precisar estar por perto, por exemplo deixar agendado para rodar o script 1 vez por semana).

          Com isso resolvido abra o script abaixo num editor de texto, edite os detalhes de configuração, salve e execute o script num terminal. Para executar torne o arquivo executável com o comando

          chmod 755 backup.sh

          e execute com

          ./backup.sh

          Tentei fazer com que meu computador ligasse remotamente (para que nem precisasse ligar a máquina de destino pra fazer backup – o script a ligaria remotamente), mas não consegui. Tem instruções sobre o wakeonlan aqui.

          O script abaixo basicamente:

          • Checa se a máquina de destino está ligada (se estiver desligada ele avisa, põe no log e fecha)
          • Se estiver ligada ele executa o rsync (o –delete-before deleta os arquivos do destino antes de copiar os arquivos novos; útil se não houver muito espaço no disco do destino – o padrão é –delete que vai deletando e copiando progressivamente)
          • O terminal mostra todas as operações e calcula a duração do backup. Tudo isso fica registrado num arquivo log

          Obviamente sugestões são muito bem vindas! Segue então o script:

          #!/bin/bash
          
          # Script para backup via SSH usando o rsync
          # Versão 0.1
          
          ## Configuração!!! ##
          # Mude os parâmetros abaixo, referentes ao seu sistema
          
          # Arquivo log
          LOG=/home/user0/.backup`date +%Y-%m-%d`.log
          
          # Destino
          # IP ou hostname da máquina de destino
          DESTINO=destino.local
          
          # Usuário no destino
          USR=user1
          
          # Diretório de destino
          DIR=/home/user1/Backup/
          
          # Origem
          # Diretório de origem
          SRC=/home/user0
          
          ## Fim das Configurações!!! ##
          
          # Checar se a máquina de destino está ligada
          /bin/ping -c 1 -W 2 $DESTINO > /dev/null
          if [ "$?" -ne 0 ];
          then
             echo -e `date +%c` >> $LOG
             echo -e "\n$DESTINO desligado." >> $LOG
             echo -e "Backup não realizado\n" >> $LOG
             echo -e "--- // ---\n" >> $LOG
             echo -e "\n$DESTINO desligado."
             echo -e "Backup não realizado.\n"
          else
             HORA_INI=`date +%s`
             echo -e `date +%c` >> $LOG
             echo -e "\n$DESTINO ligado!" >> $LOG
             echo -e "Iniciando o backup...\n" >> $LOG
             rsync -ah --delete --stats --progress --log-file=$LOG -e ssh $SRC $USR@$DESTINO:$DIR
             HORA_FIM=`date +%s`
             TEMPO=`expr $HORA_FIM - $HORA_INI`
             echo -e "\nBackup finalizado com sucesso!" >> $LOG
             echo -e "Duração: $TEMPO s\n" >> $LOG
             echo -e "--- // ---\n" >> $LOG
             echo -e "\nBackup finalizado com sucesso!"
             echo -e "Duração: $TEMPO s\n"
             echo -e "Consulte o log da operação em $LOG.\n"
          fi
          
          # Afazeres
          
          #	- Incluir em cron job!
          #	- Definir como lidar com o arquivo.log (deletar, arquivar, deixar...)
          #	- Incluir wakeonlan para ligar o computador se estiver desligado
          #	- Desligar máquina de destino após o término do backup
          #	- Criar alça para quando a transferência falhar (e.g.,falta de espaço)
          
           
          • Stt@L 23:19 on 2009/08/07 Permalink | Reply

            Boas

            Quanto ao WOL se o computador estiver que esta na sua rede local basta instalar o wakeonlan (no pc que executa o script) com o seguinte comando:

            sudo apt-get install wakeonlan etherwake

            apos isto para acordar o pc basta meter o comando:
            wakeonlan -p 7 00:11:22:33:44:55

            onde o parâmetro “-p 7″ é o numero da porta (porta 9 por defeito) e onde “00:11:22:33:44:55″ é o mac adress do computador que quer acordar.

            Agora só tem de integrar este comando no seu script na parte onde manda o Ping e verifica se o computador esta desligado.

            Caso ele esteja desligado entao manda o “Pacote magico” e volta atras no script voltando a verificar se o pc já esta acordado.

            Eu até completava o script por você mas não ando dentro de shell scripting ultimamente.
            :D

            • nelas 20:29 on 2009/08/09 Permalink | Reply

              Opa, valeu! Na verdade tentei tudo isso e mais algumas coisinhas, mas o computador não ligou. Por isso nem incluí nada no script. Qualquer dia desses tentarei de novo.

              abs

          • Eduardo Peçanha 14:30 on 2009/10/04 Permalink | Reply

            Ola amigo, estava procurando isso mesmo, mas tenho uma duvida.
            Este Script faz com que os arquivos sejam Sobrescritos na maquina de backup ?
            obrigado

          • Eduardo Peçanha 14:32 on 2009/10/04 Permalink | Reply

            Outra duvida é se seria possivel temporizar este comando ? para que de hora em hora ele faça um rsync .;

          • nelas 17:15 on 2009/10/06 Permalink | Reply

            Olá Eduardo, sim se você atualizar os arquivos na sua máquina de origem os arquivos na máquina de destino serão sobrescritos.

            Para temporizar tente um cronjob (exemplos) que executa o script no intervalo que você definir.

          • Paul 16:44 on 2009/11/12 Permalink | Reply

            rsync rocks! =D

          • Gepeto 9:01 on 2010/03/06 Permalink | Reply

            Nelas, muito bom!

            Pena que agora eu só estou trabalhando com mac e usando o time machine, mas com certeza, irei esbarrar nos linux da vida mais algumas vezes…

          • Cris 12:01 on 2010/08/20 Permalink | Reply

            Excelent!!
            Utilizei no SUSE fazendo algumas poucas adaptações e funfou direitinho!
            Thanks.

        c
        compose new post
        j
        next post/next comment
        k
        previous post/previous comment
        r
        reply
        e
        edit
        o
        show/hide comments
        t
        go to top
        l
        go to login
        h
        show/hide help
        shift + esc
        cancel