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/

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

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 na 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)

Como são as coisas

De um lado tinha a música. Do outro a biologia.

Em 2006 descobri um universo de músicas distribuídas livremente na rede e comecei explorá-lo. O primeiro contato foi pelo Jamendo e depois fui conhecendo os lançamentos das chamadas netlabels. Empolgado com tudo isso, pois achei muita coisa boa, resolvi criar um blog pra compartilhar esses achados, o ccnelas.org. Fui acumulando álbuns interessantes e um dia desses resolvi fazer uma coletânea com algumas músicas que havia divulgado no ccnelas. Pensei um pouco a respeito.

Enquanto isso estava enfurnado em um laboratório no litoral norte de São Paulo fazendo meu mestrado com biologia marinha. Boa parte do meu projeto envolvia criar embriões e larvas de uma espécie de bolacha-do-mar. Nesta época fiquei todo o verão convivendo com estes embriões e larvas.

Alimentando e trocando a água todo dia, olhando no microscópio, tirando fotos, fazendo filmes. Talvez seja por isso que os cientistas sejam meio malucos; muitos vêem coisas que pouca gente no mundo imagina que exista, ou verá algum dia. Conhecer e conviver com estes bichinhos foi certamente intrigante.

Imagine: você é concebido na água do mar, e antes de ter uma dúzia de células, já está sozinho, pois o movimento constante da água se encarrega de diluir sua imensa (milhões) quantidade de irmãos; quando começa a nadar você não tem boca ou ânus, nem sequer nasceu da membrana que protege o óvulo; você usa pequenos cílios para nadar na água, que mais parece melaço, por causa de seu tamanho diminuto; você continua nadando, mas só vai para onde as correntes marítimas te levam, sua força é muito pequena; você continua a se desenvolver e finalmente tem pequenos braços e uma boca; com os braços você captura e se alimenta de microalgas enquanto continua nadando; na medida em que se alimenta começa a se formar, dentro de você, uma pequena estrutura; o que está crescendo é uma bolacha-do-mar; aos poucos a pequena bolacha vai ocupando parte do corpo da larva; em determinado momento a larva começa a nadar perto do fundo, abrindo os braços e expondo a bolacha; a larva e a bolacha, que são uma coisa só, experimentam o fundo, quando gostam um pé da bolacha se estende e gruda firmemente no fundo; a partir deste momento a bolacha nunca mais ira nadar e a larva começa a deixar de existir; em pouco tempo toda larva, suas estruturas, tecidos, são reabsorvidos pela bolacha, que já está dando seus primeiros passos entre os grãos de areia.

Enquanto estudava esta efêmera e diferente história de vida das larvas plúteos, tive uma idéia. Resolvi escolher músicas publicadas no ccnelas que representassem a estranha vida de uma larva plúteos e montar uma coletânea. Foi assim the nasceu “A Viagem do Plúteos” (original em inglês “The Pluteus Trip” lançado em 2007 [usei a estranhez que a vida dos plúteos havia me causado como parâmetro para selecionar músicas disponibilizadas na rede].

Engraçado, enquanto compilava as músicas estava organizando a vinda da exposição “Oceano: vida escondida” para São Paulo, e precisávamos de um texto de divulgação. O release que havia escrito para “A Viagem do Plúteos” caiu como uma luva e serviu de base para o texto “Vida Escondida” publicado na magazine “O Telescópio” da Estação Ciência [usei o release de uma coletânea de músicas para escrever um texto de divulgação].

Certo dia as fotos da exposição foram citadas numa revista digital de música livre. Pouco tempo depois fui contatado para que uma das fotos do Alvaro fosse usada na capa de um mix de músicas ambientes chamado “Underwater is a place to be alone[usaram uma foto da exposição para ilustrar um álbum de música].

Este álbum era perfeito para servir de música ambiente para a exposição, mas por impasses técnicos não conseguimos colocá-la [usaríamos um álbum , cuja capa era uma foto da exposição como música ambiente da mesma].

Fiz um vídeo com o material do meu mestrado. Nas versões anteriores tinha colocado uma música minha inacabada. No entanto, não havia gostado muito, tanto do efeito da música no vídeo quanto da qualidade do som. Adoraria ter aceitado o desafio de compor uma trilha para o vídeo, mas simplesmente não havia tempo. Precisava então de uma música que tivesse o clima certo. Não pensei muito para recorrer ao “The Pluteus Trip” e não levou mais do que alguns minutos para definir a música tema do vídeo, que é a música de abertura da coletânea, Autonarkose do My First Trumpet no álbum Frerk.

Resolvi experimentar o yEd para mostrar as relações acima num fluxograma. Ficou interessante, especialmente os layouts automáticos (o primeiro posicionei na mão…).

Vida de Bolacha

Meu vídeo sobre o ciclo de vida de uma bolacha-do-mar está online!


Vida de Bolacha from Bruno Vellutini on Vimeo.

Saiba mais em:
http://mestrado.organelas.com/videos/

Estatística

It must be emphasized that statistical hypotheses are to be stated before data are collected to test them. To propose hypotheses after examination of data can invalidate a statistical test. One may, however, legitimately formulate hypotheses after inspecting data if a new set of data is then collected with which to test the hypotheses.

Livro: Biostatistical Analysis (Third Edition)

Autor: Jerrold H. Zar

Página: 79

Oceano no Rio & Lablogatórios

Tópico rápido para anunciar as últimas novidades:

A exposição “Oceano: vida escondida” está no Museu da Vida, Rio de Janeiro do dia 12 de Agosto de 2008 até dia 27 de Setembro de 2008! Se você é carioca, ou visitando a cidade maravilhosa vá conhecer cara a cara os seres que dominam boa parte do planeta…

Para mais informações leia o tópico do blog oficial da exposição. Ainda não viu as fotografias??? Visite o site da exposição no www.usp.br/cbm/oceano. Quer receber as novidades por email? Clique aqui (ou pelo feed).

A outra novidade é que acaba de ser lançado o Lablogatórios, primeiro portal agregador de blogs de ciência brasileiro! Leia mais aqui ou entre direto no site www.lablogatorios.com.br.

Élie Metchnikoff

Um cientista em minha vida

Em 2002, enquanto cursava o segundo ano de biologia, comecei a ler um livro recomendado pelo chefe do laboratório onde eu fazia estágio. Organizamos um grupo de discussão e ao longo de vários meses nos reunimos semanalmente para discutí-lo com um colaborador da filosofia. O livro chama-se Metchnikoff e as Origens da Imunologia – Da Metáfora à Teoria (Metchnikoff and the Origins of Immunology – From Metaphor to Theory) [googlebooks, amazon].

Como eu não estava num estágio de imunologia e a área não me era familiar, estranhei um pouco o assunto do livro. Até começar a ler.

O livro é uma análise minuciosa da carreira do biólogo russo Élie Metchnikoff, feita por Alfred Tauber e Leon Chernyak. Os autores mostram com maestria como a postura filosófica, ou modo de ver o mundo, de Metchnikoff afetaram diretamente suas interpretações e teorias biológicas. Isso me surpreendeu bastante já que pra mim a ciência era um bloco sólido e objetivo de fatos. E não apenas algo criado por meros “macacos“.

Élie Metchnikoff

Élie Metchnikoff

Bom, mas quem foi Metchnikoff, afinal? E o que este biólogo russo que passou boa parte da sua vida estudando embriões de invertebrados marinhos tem a ver com imunologia?

Nascido em 1845, Élie Metchnikoff, viveu uma agitada e controversa vida acadêmica, envolvendo-se em discussões com grandes nomes da época como Robert Koch e Ernst Haeckel. Logo após a publicação do “Origem das Espécies” de Charles Darwin, Metchnikoff iniciou seus estudos embriológicos descrevendo o desenvolvimento de diversos invertebrados.

Quando Haeckel lançou sua versão da origem dos animais (gastraea) baseado no desenvolvimento dos anfioxos, Metchnikoff não tardou a apresentar sua versão para o ancestral hipotético do reino animal (parenchymella), baseado no desenvolvimento de esponjas e cnidários, organismos considerados mais basais.

Foi nessa busca pelos mecanismos ancestrais do desenvolvimento que Metchnikoff começou a se perguntar como estas linhagens celulares podem formar um todo organizado (um organismo).

A primeira grande sacada do russo foi perceber que a evolução de seres multicelulares deveria ser entendida por processos seletivos operando entre as linhagens celulares. Com isso viu que a existência de um animal depende, essencialmente, das interações celulares que ocorrem durante seu desenvolvimento. Compreender estas interações poderia revelar dicas de como foi a origem e evolução dos animais.

Naquela época os organismos eram considerados intrinsicamente harmoniosos (equilibrados) e a doença seria causada pelo desequilíbrio entre os humores do corpo. A restauração da saúde dependeria da recuperação do balanço entre estas substâncias corpóreas, e o corpo seria passivo neste processo. Metchnikoff, que era um grande pessimista em relação à vida (incluindo algumas tentativas de suicídio no seu currículo), sugeriu algo diferente. Os organismos seriam intrinsicamente desarmoniosos, mas que estariam ativamente mantendo sua organização.

Este salto metafísico veio da recorrente observação de determinado fenômeno ao longo de seus extensos estudos embriológicos: a fagocitose. Estas células amebóides parecem ter herdado a capacidade de englobar partículas presente nas amebas (protozoários). Num contexto multicelular estas células não somente alimentavam-se ao fagocitar, mas também forneciam alimento às outras células, como nas esponjas, animais com digestão intracelular. O ato de englobar partículas, além de bastante comum, parecia essencial nos processos do desenvolvimento dos organismos, como a regressão da cauda de girinos, estudado pelo russo.

Larva brachiolaria de estrela-do-mar

Larva brachiolaria de estrela-do-mar

Sua obsessão pela fagocitose culminou num famoso experimento que edificou as bases de sua teoria, a Teoria Fagocítica. Enquanto observava as células de uma larva de estrela-do-mar Metchnikoff percebeu que estas células também poderiam estar ativamente protegendo o organismo através da fagocitose. Para testar tal idéia Metchnikoff pegou um acúleo de roseira e espetou na larva de estrela-do-mar. No dia seguinte encontrou o acúleo cercado de células amebóides, indicando uma resposta aquele estímulo estranho.

A capacidade de “comer” e migrar dos fagócitos, que inicialmente permitiu a nutrição de outras células do organismo, assume um novo papel em animais com digestão extracelular. Estas células exercem agora um papel regulativo, mantendo a integridade do organismo através da fagocitose de invasores (e.g. bactérias) e limpeza de debris celulares. Este cenário é um prato cheio para biólogos interessados em evolução! Nesta altura da história eu já me encontrava imerso no maravilhoso mundo da fagocitose, a resposta para tudo… meus amigos que o digam ;-) .

A universalidade da fagocitose no reino animal (com raríssimas exceções) deixou Metchnikoff sem dúvidas da importância deste fenômeno para a vida dos animais, sugerindo que estas células seriam as responsáveis pela criação e manutenção da identidade de um organismo. O reconhecimento de elementos estranhos ao organismo cabia aos fagócitos. Partindo de estudos descritivos de embriologia comparada, passando pela fisiologia das linhagens celulares e suas interações, e sempre tentando entender a origem dos animais num contexto evolutivo, este russo promoveu um salto conceitual no entendimento do que é um organismo. A noção que o organismo têm uma resposta ativa à invasores patogênicos é a base da imunologia até hoje.

Depois de muitas controvérsias Élie Metchnikoff e Paul Ehrlich dividiram o Prêmio Nobel de Fisiologia ou Medicina de 1908, pelas suas contribuições no estudo do sistema imune.

Ler esta história foi fantástico pra mim e definitivamente moldou meus interesses na biologia. Não imagino o que teria feito se não tivesse conhecido Metchnikoff, haha. Também me tornei obsessivo. Lembro que qualquer pergunta biológica poderia ser respondida com apenas uma palavra: fagocitose. Foi uma experiência interessante, até que comecei a ter aulas de botânica, e de repente percebi… células vegetais tem parede, não saem migrando e fagocitando por aí…!!! :-O Foi um choque. E assim caminha a ciência.

ps: acreditando que a imunidade estava ligada à nutrição, Metchnikoff popularizou o consumo de iogurtes para combater os efeitos deletérios de bactérias tóxicas presentes na flora intestinal, e assim promover a longevidade. É por causa do Metchnikoff que comemos iogurte e tomamos yakult!

Este tópico faz parte do Carnaval Científico, com o tema “Um cientista em minha vida”, promovido pelo Carlos e Atila. Leia outros no tópico agregador!

Congresso Internacional de Ensino em Ciências – Colômbia 2009

Está aí uma ótima oportunidade para discutir a ampliar os horizontes da educação em ciência! Que tal os blogueiros científicos aderirem em massa? Até 2009 tem bastante tempo para desenvolver e testar idéias para apresentar no congresso…!

International Congress of Science Education

Congresso Internacional de Ensino em Ciências

Segue abaixo os temas a serem abordados no congresso:

  • Active modern methods and innovations in science education (physics, chemistry, biology, etc.)
  • Modern curriculum design
  • Evaluation and assessment
  • Science experiment and laboratory in teaching and learning
  • Educational technology, software and Internet in science education
  • Modern textbooks
  • Research in science and mathematic education
  • Science Olympiads
  • Methodology of mathematics education
  • Methodology of different natural sciences (geology, astronomy, biotechnology, biomedical sciences etc.)
  • and other themes

Info:
International Congress of Science Education
www.colciencias.gov.co/rec/cong
15 a 18 de Julho de 2009
Cartagena, Colômbia

Conferência do ImageJ

Acaba de ser anunciada a segunda conferência dos usuários e desenvolvedores do ImageJ! Será em Luxemburgo nos dias 6 e 7 de Novembro de 2008. O link para o site da conferência segue abaixo:

imagejconf

http://imagejconf.tudor.lu/

Faculty of 1000

Acabei de descobrir esse site!

www.facultyof1000.com

Nele aproximadamente 5000 cientistas “top do mundo” recomendam artigos científicos importantes, interessantes, controversos, etc… Em menos de 5 minutos mexendo eu encontri coisas bem legais! Ele tem uma seção de Biologia e outra de Medicina, obviamente olhei os artigos de biologia, especialmente de biologia do desenvolvimento.

Ainda tem coisitas legais como listar os “top 10″, os mais acessados, e as “pérolas escondidas”… Mais uma prova que a internet pode ajudar a ciência muito além do nosso velho conhecido email. Seria legal se usuários comuns pudessem deixar sua opinião sobre os artigos…

Putz, acabei de ver que para acessar talvez precise de assinatura da universidade… :-( Quando voltar pra casa faço o teste.

[edit] Continuo sem saber, consegui acessar de fora da rede da USP (colocando o login e tal…), mas ainda estou em dúvida. Tinha algo de 7 dias grátis… e ainda fazem 6 dias que me cadastrei… [/edit]