{"id":132,"date":"2011-07-08T20:05:37","date_gmt":"2011-07-08T23:05:37","guid":{"rendered":"http:\/\/blog.abratel.com.br\/2011\/07\/08\/como-programar-backup-com-rsync-e-cron-de-maneira-rapida-e-simples\/"},"modified":"2011-07-08T20:05:52","modified_gmt":"2011-07-08T23:05:52","slug":"como-programar-backup-com-rsync-e-cron-de-maneira-rapida-e-simples","status":"publish","type":"post","link":"https:\/\/blog.abratel.com.br\/?p=132","title":{"rendered":"Como programar backup com rsync e cron de maneira r\u00e1pida e simples"},"content":{"rendered":"<p>Como programar backup com rsync e cron de maneira r\u00e1pida e simples<\/p>\n<p>Nesse tutorial, voc\u00ea aprender\u00e1 uma forma r\u00e1pida e simples de como criar um backup automatizado atrav\u00e9s do rsync, acionado pelo cron. Utilizo em meu servidor esse pequeno script de backup. Ele realiza o backup em um momento pr\u00e9-programado pelo cron em uma pasta que desejar, podendo ser um outro disco no servidor.<br \/>\nPorque usar o rsync<\/p>\n<p>Simplesmente porque ele \u00e9 um software espec\u00edfico para realiza\u00e7\u00e3o de c\u00f3pias, funciona de maneira a acelerar as transfer\u00eancias ao copiar as diferen\u00e7as entre 2 arquivos, ao inv\u00e9s de copiar o arquivo inteiro todas as vezes. Isso mesmo. Ele consegue identificar quais arquivos foram alterados e o administrador pode optar por copiar somente os arquivos novos ou modificados e n\u00e3o necessariamente todos os arquivos, o que tornaria o processo de backup demorado de maneira desnecess\u00e1ria.<\/p>\n<p>Esse recurso pode apresentar grande vantagem, principalmente para backups di\u00e1rios de grande quantidade de arquivos.<\/p>\n<p>Outro grande benef\u00edcio \u00e9 que o rsync preserva as informa\u00e7\u00f5es sobre permiss\u00f5es e propriedade dos arquivos e diret\u00f3rios, inclusive de links simb\u00f3licos.<br \/>\nInstalando o rsync<\/p>\n<p>O primeiro passo \u00e9 instalar o rsync, caso voc\u00ea ainda n\u00e3o o possua. Se voc\u00ea utiliza Debian, logado como root digite:<\/p>\n<p>  # apt-get install rsync<\/p>\n<p>Se voc\u00ea utiliza Ubuntu, digite:<\/p>\n<p>  $ sudo apt-get install rsync<\/p>\n<p>Somente para confirmar se seu rsync est\u00e1 funcionando normalmente, digite na linha de comando:<\/p>\n<p>  $ rsync<\/p>\n<p>Caso apare\u00e7am informa\u00e7\u00f5es de help do rsync \u00e9 porque foi instalado corretamente.<br \/>\nConfigurando o arquivo de backup<\/p>\n<p>No arquivo abaixo, ser\u00e1 utilizado o seguinte par\u00e2metro com o rsync para que ele realize a c\u00f3pia: -Cravzp. Dessa forma, o rsync est\u00e1 sendo acionado para:<br \/>\n-C \tauto-ignorar arquivos id\u00eanticos<br \/>\n-r \tcopier de forma recursive, ou seja todos os diret\u00f3rios e subdiret\u00f3rios no caminho especificado<br \/>\n-a \tindica que estar\u00e3o sendo copiados arquivos<br \/>\n-v \tmodo verboso, mais informa\u00e7\u00f5es da c\u00f3pia<br \/>\n-z \tcomprime os arquivos durante a c\u00f3pia<br \/>\n-p \tindicador de progresso de c\u00f3pia<\/p>\n<p>  #!\/bin\/bash<\/p>\n<p>  INICIO=`date +%d\/%m\/%Y-%H:%M:%S`<br \/>\n  LOG=\/var\/log\/`date +%Y-%m-%d`_nome-do-arquivo-de-log.txt<\/p>\n<p>  echo &#8221; &#8221; >> $LOG<br \/>\n  echo &#8221; &#8221; >> $LOG<br \/>\n  echo &#8220;| &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212;&#8212;&#8211;&#8221;  >> $LOG<br \/>\n  echo &#8221;  Sincronizacao iniciada em $INICIO&#8221; >> $LOG<\/p>\n<p>  sudo rsync -Cravzp \/pasta-de-origem\/ \/pasta-de-destino\/ >> $LOG<br \/>\n  FINAL=`date +%d\/%m\/%Y-%H%:M:%S`<\/p>\n<p>  echo &#8221;  Sincronizacao Finalizada em $FINAL&#8221; >> $LOG<br \/>\n  echo &#8220;| &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212;&#8212;&#8211;&#8221;  >> $LOG<br \/>\n  echo &#8221; &#8221; >> $LOG<br \/>\n  echo &#8221; &#8221; >> $LOG<\/p>\n<p>Explicando o arquivo de backup<\/p>\n<p>Na primeira linha h\u00e1 um aviso ao interpretador de comandos que deve ser utilizado o bash:<\/p>\n<p>  #!\/bin\/bash<\/p>\n<p>Armazena o momento de in\u00edcio na vari\u00e1vel INICIO, no formato dd\/mm\/yyyy-hh:mm:ss:<\/p>\n<p>  INICIO=`date +%d\/%m\/%Y-%H:%M:%S`<\/p>\n<p>Armazena na vari\u00e1vel LOG qual o arquivo que deve ser gravado um registro do backup, no formato yyyy-mm-dd_nome-do-arquivo.txt:<\/p>\n<p>  LOG=\/var\/log\/`date +%Y-%m-%d`_nome-do-arquivo-de-log.txt<\/p>\n<p>Mantendo esse arquivo, pode ser muito \u00fatil para que possa verificar se os backups t\u00eam sido realizados corretamente. Cria o in\u00edcio do registro de log no arquivo, gravando um cabe\u00e7alho no qual insere a data e hora do in\u00edcio do backup:<\/p>\n<p>  echo &#8221; &#8221; >> $LOG<br \/>\n  echo &#8221; &#8221; >> $LOG<br \/>\n  echo &#8220;| &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212;&#8211;&#8221;  >> LOG<br \/>\n  echo &#8221;  Sincronizacao iniciada em $INICIO&#8221; >> $LOG<\/p>\n<p>Essa \u00e9 a linha que realiza o backup de fato. Ela invoca o comando rsync e fornece os par\u00e2metros de quais arquivos copiar e para qual destivo. A cada arquivo copiado, uma linha ser\u00e1 inserida no arquivo de log. Dessa forma, o administrador pode saber quais arquivos foram copiados no backup de determinado dia.<\/p>\n<p>  sudo rsync -Cravzp \/pasta-de-origem\/ \/pasta-de-destino\/ >> $LOG<\/p>\n<p>Armazena o momento de t\u00e9rmino do backup na vari\u00e1vel FINAL, no formato<\/p>\n<p>  FINAL=`date +%d\/%m\/%Y-%H%:M:%S`<\/p>\n<p>Finaliza o arquivo de backup com um rodap\u00e9 no qual insere a data e hora do t\u00e9rmino do backup:<\/p>\n<p>  echo &#8221;  Sincronizacao Finalizada em $FINAL&#8221; >> $LOG<br \/>\n  echo &#8220;| &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212;&#8211;&#8221;  >> $LOG<br \/>\n  echo &#8221; &#8221; >> $LOG<br \/>\n  echo &#8221; &#8221; >> $LOG<\/p>\n<p>Observa\u00e7\u00f5es: Caso deseje alterar os par\u00e2metros do rsync para a c\u00f3pia, consulte o manual do rsync com o comando man rsync. Sugiro criar uma pasta em \/var\/log com o nome rsync e gravar todos os logs do rsync nessa pasta.<br \/>\nProgramando o cron para realizar o backup<\/p>\n<p>O cron \u00e9 um servi\u00e7o do Linux que \u00e9 carregado durante o processo de boot do sistema. Ele funciona como um agendador de tarefas e permite agendar a execu\u00e7\u00e3o de comandos e processos de maneira repetitiva ou para uma data espec\u00edfica.<\/p>\n<p>O daemon (uma esp\u00e9cie de programa que executa tarefas em segundo plano) do cron executa os comandos nas datas e hor\u00e1rios especificados. A cada minuto, o daemon verifica se h\u00e1 alguma tarefa a ser executada.<\/p>\n<p>Todas as a\u00e7\u00f5es do cron s\u00e3o realizadas por base em registros em uma esp\u00e9cie de tabela conhecida como crontab.<\/p>\n<p>Para os familiarizados com o Linux, n\u00e3o h\u00e1 segredos para a configura\u00e7\u00e3o do cron via linha de comando.<\/p>\n<p>Para os que possuem menos dom\u00ednio do Linux, sugiro fortemente que instale o Webmin. Trata-se de uma ferramenta de administra\u00e7\u00e3o atrav\u00e9s de interface web que facilita muito a vida do administrador.<\/p>\n<p>Para instalar o Webmin, fa\u00e7a seu download a partir de http:\/\/www.webmin.com\/download.html . Aos usu\u00e1rios de Debian e Ubuntu, baixe o pacote .deb . Se seu Linux for um Debian, digite como root:<\/p>\n<p>  # dpkg  i webmin_versao-do-webmin-copiado.deb<\/p>\n<p>Se seu Linux for um Ubuntu, digite:<\/p>\n<p>  $ sudo dpkg  i webmin_versao-do-webmin-copiado.deb<\/p>\n<p>Caso apresente depend\u00eancias de outros pacotes, instale os pacotes que solicitar.<\/p>\n<p>J\u00e1 com o Webmin instalado, acesso pelo navegador o endere\u00e7o https:\/\/192.168.1.11:10000 e digite seu usu\u00e1rio do sistema Linux.<\/p>\n<p>Dentro do Webmin, acesse o menu Sistema > Tarefas agendadas (CRON).<\/p>\n<p>N\u00e3o remova os agendamentos j\u00e1 existentes! Pode danificar seu Linux.<\/p>\n<p>Apenas clique na op\u00e7\u00e3o Criar nova tarefa agendada.<\/p>\n<p>Na pr\u00f3xima janela, uma sugest\u00e3o de agendamento seria:<\/p>\n<p>Executar tarefa agendada como root<\/p>\n<p>  Ativo: sim<br \/>\n  Descri\u00e7\u00e3o: < descreva aqui sua tarefa para que voc\u00ea se lembre><br \/>\n  Executar quando: Hor\u00e1rios e datas selecionados abaixo<br \/>\n  Minutos: Selecionados           0<br \/>\n  Hora: Selecionados              17<br \/>\n  Dias: Todos<br \/>\n  Meses: Todos<br \/>\n  Dias da semana: Todos<br \/>\n  Executar em qualquer data: sim<\/p>\n<p>Seu backup agendado est\u00e1 pronto!<\/p>\n<p>Verifique no primeiro backup se os arquivos foram copiados corretamente para o destino e confirme o registro de log do arquivo. Caso esteja tudo ok, nos momentos programados seu backup ir\u00e1 funcionar automaticamente, sem interven\u00e7\u00e3o manual. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Como programar backup com rsync e cron de maneira r\u00e1pida e simples Nesse tutorial, voc\u00ea aprender\u00e1 uma forma r\u00e1pida e simples de como criar um backup automatizado atrav\u00e9s do rsync, acionado pelo cron. Utilizo em meu servidor esse pequeno script de backup. Ele realiza o&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/132"}],"collection":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=132"}],"version-history":[{"count":0,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/132\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=132"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}