{"id":730,"date":"2014-04-06T02:42:10","date_gmt":"2014-04-06T05:42:10","guid":{"rendered":"http:\/\/www.viazap.com.br\/?p=730"},"modified":"2014-04-06T02:42:10","modified_gmt":"2014-04-06T05:42:10","slug":"backups-remotos-com-rsync-e-chaves-ssh","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=730","title":{"rendered":"Backups remotos com rSync e chaves SSH"},"content":{"rendered":"<p><b>rSync e comandos \/ SSH e automatiza\u00e7\u00e3o<\/b><\/p>\n<div>\n<h1>rSync e alguns comandos<\/h1>\n<p>O\u00a0<em>rSync<\/em>, assim como o SCP, s\u00e3o \u00f3timas ferramentas para transfer\u00eancias de arquivos entre m\u00e1quinas, por\u00e9m, possuem uma defici\u00eancia, eles s\u00e3o inseguros.<\/p>\n<p>Originalmente, o rSync n\u00e3o utiliza nenhuma forma de criptografia, o que o torna um tanto ineficaz para backups via Internet. Entretanto, este problema pode ser facilmente resolvido, utilizando o nosso &#8220;canivete su\u00ed\u00e7o&#8221;\u00a0<em>SSH<\/em>\u00a0como meio de transporte, possibilitando automatizar a tarefa com um script b\u00e1sico.\u00a0<!--more--><\/p>\n<p>Neste exemplo, vou me referir a m\u00e1quina local como (A) e o servidor como (B). O comando com o\u00a0<span>rsync<\/span>, seria o seguinte:<\/p>\n<p><strong>$ rsync -av &#8211;rsh=&#8221;ssh -l bkuser&#8221; \/mnt\/backup\/ bkuser@IPServidorRemoto:\/home\/bkuser\/backup\/<\/strong><\/p>\n<p>Onde, no comando anterior:<\/p>\n<ul>\n<li>O par\u00e2metro\u00a0<span>&#8211;rsh=ssh<\/span>, orienta o rSync a utilizar o SSH como meio de transporte.<\/li>\n<li>O\u00a0<span>-l bkuser<\/span>, informa com qual usu\u00e1rio o SSH deve conectar-se no servidor remoto (B).<\/li>\n<li>Adiante, vem a pasta local (A), o endere\u00e7o IP do servidor remoto (B) e a pasta para onde v\u00e3o os arquivos.<\/li>\n<\/ul>\n<p>Naturalmente, para que tudo funcione, \u00e9 necess\u00e1rio que o servi\u00e7o SSH esteja em execu\u00e7\u00e3o nas duas m\u00e1quinas e que o usu\u00e1rio local (A) tenha um login de acesso na m\u00e1quina servidora (B).<\/p>\n<p>Os par\u00e2metros\u00a0<span>-av<\/span>, fazem com que o rSync grave e atualize novos arquivos na pasta do servidor (B), caso o usu\u00e1rio apague arquivos na pasta local (A) e quiser que essa a\u00e7\u00e3o seja sincronizada com o servidor (B), ser\u00e1 necess\u00e1rio adicionar o par\u00e2metro\u00a0<span>&#8211;delete<\/span>.<\/p>\n<p>Outro par\u00e2metro interessante, \u00e9 o\u00a0<span>-z<\/span>, que ativa a compress\u00e3o na transfer\u00eancia dos arquivos reduzindo o volume de bytes transferidos.<\/p>\n<p>O comando para dele\u00e7\u00e3o, seria o seguinte:<\/p>\n<p><strong>$ rsync -av &#8211;delete &#8211;rsh=&#8221;ssh -l bkuser&#8221; \/mnt\/backup\/ bkuser@IPremoto:\/home\/bkuser\/backup\/<\/strong><\/p>\n<p>O comando para compress\u00e3o dos arquivos, seria o seguinte:<\/p>\n<p><strong>$ rsync -avz &#8211;rsh=&#8221;ssh -l bkuser&#8221; \/mnt\/backup\/ bkuser@IPremoto:\/home\/bkuser\/backup\/<\/strong><\/p>\n<p>Outra opera\u00e7\u00e3o interessante, seria realizar um backup da m\u00e1quina servidora (B) para a m\u00e1quina local (A) em uma opera\u00e7\u00e3o inversa, o comando seria o seguinte:<\/p>\n<p><strong>$ rsync -av &#8211;rsh=&#8221;ssh -l bkuser&#8221; bkuser@IPremoto:\/home\/bkuser\/backup\/ \/mnt\/backup\/<\/strong><\/p>\n<p>Observa\u00e7\u00e3o: a barra no final do caminho faz toda diferen\u00e7a, sem ela, o comando criar\u00e1 um subdiret\u00f3rio e copiar\u00e1 os arquivos. Com ela, o comando s\u00f3 copiar\u00e1 os arquivos.<\/p>\n<p>Algumas op\u00e7\u00f5es comuns do\u00a0<span>rsync<\/span>:<\/p>\n<ul>\n<li><span>-r<\/span>\u00a0:: c\u00f3pia recursiva;<\/li>\n<li><span>-a<\/span>\u00a0:: modo de arquivamento;<\/li>\n<li><span>-v<\/span>\u00a0:: de modo verbose, para mostrar na tela tudo o que ele est\u00e1 fazendo;<\/li>\n<li><span>-z<\/span>\u00a0:: para compactar o arquivo durante a transfer\u00eancia (e descompactar no destino);<\/li>\n<li><span>-u<\/span>\u00a0:: modo update. Se o arquivo n\u00e3o foi atualizado, pula para o pr\u00f3ximo, poupando tempo;<\/li>\n<li><span>-p<\/span>\u00a0:: preserva as permiss\u00f5es dos arquivos.<\/li>\n<\/ul>\n<p>Existem diversas outras op\u00e7\u00f5es para o\u00a0<span>rsync<\/span>, bastando apenas uma consulta simples com o comando:<\/p>\n<p><strong>$ man rsync<\/strong><\/p>\n<div>Fatalmente, o usu\u00e1rio precisar\u00e1 fornecer a senha de acesso ao servidor, toda vez que executar o comando, o que impossibilita o uso em scripts de backup autom\u00e1tico.<\/p>\n<p>Para resolver esse problema, a melhor solu\u00e7\u00e3o, \u00e9 utilizar um par de chaves SSH com a\u00a0<span>passphrase<\/span>\u00a0em branco. Dessa forma, o usu\u00e1rio n\u00e3o precisa digitar a senha, tornando a opera\u00e7\u00e3o autom\u00e1tica.<\/p>\n<h1>Gerando as chaves SSH e automatizando o acesso<\/h1>\n<p>O primeiro passo, caso o administrador ainda n\u00e3o tenha feito, seria criar um usu\u00e1rio na m\u00e1quina servidora (B). Esse usu\u00e1rio permitir\u00e1 o acesso aos arquivos por parte da m\u00e1quina local (A).<\/p>\n<p>Nesse exemplo, foi criado o usu\u00e1rio\u00a0<span>bkuser<\/span>\u00a0na m\u00e1quina (B), ou seja, no servidor que receber\u00e1 os arquivos, com o comando:<\/p>\n<p><strong># adduser bkuser<\/strong><\/p>\n<p>O passo seguinte ser\u00e1 gerar as chaves SSH na m\u00e1quina local (A), com o comando:<\/p>\n<p><strong>$ ssh-keygen -t rsa<\/strong><\/p>\n<p>Para isso, utilize um usu\u00e1rio normal do sistema, \u00e9 recomendado n\u00e3o utilizar o\u00a0<span>root<\/span>\u00a0para essa opera\u00e7\u00e3o por uma quest\u00e3o de seguran\u00e7a.<\/p>\n<p>No Ubuntu, onde fiz os testes, as chaves nem foram criadas como\u00a0<span>root<\/span>. N\u00e3o precisa nomear o arquivo, deixe tudo em branco, assim como a\u00a0<span>passphrase<\/span>.<\/p>\n<p>Ser\u00e3o geradas duas chaves, a privada e a p\u00fablica. As duas chaves se encontram no diret\u00f3rio\u00a0<span>home<\/span>\u00a0do usu\u00e1rio, com o qual foi dado o comando dentro da pasta oculta\u00a0<span>.ssh<\/span>. \u00c9 importante que as chaves estejam dentro desse diret\u00f3rio.<\/p>\n<p>A chave p\u00fablica ser\u00e1 enviada para o servidor remoto (B), usando o comando:<\/p>\n<p><strong>$ ssh-copy-id -i ~\/.ssh\/id_rsa.pub bkuser@IPServidorRemoto<\/strong><\/p>\n<p>Se tudo ocorrer normalmente, o usu\u00e1rio j\u00e1 poder\u00e1 logar-se no servidor remoto (B) sem precisar fornecer a senha. Isso poder\u00e1 ser feito, executando o seguinte comando:<\/p>\n<p><strong>$ ssh bkuser@IPServidorRemoto<\/strong><\/p>\n<p>Isso, supondo que a porta seja a 22, que \u00e9 a padr\u00e3o do SSH. Caso n\u00e3o seja, utilize o par\u00e2metro\u00a0<span>-p<\/span>\u00a0e especifique a porta.<\/p>\n<p>Agora, \u00e9 s\u00f3 gerar o script de backup com algum dos comandos mostrados e inserir uma linha no arquivo\u00a0<span>crontab<\/span>, para que a opera\u00e7\u00e3o seja automatizada.<\/p>\n<h1>Finalizando<\/h1>\n<p>Espero que d\u00ea certo com voc\u00eas.<\/p>\n<p>Em meus testes, funcionou perfeitamente.<\/p>\n<p>Qualquer d\u00favida, \u00e9 s\u00f3 deixar um coment\u00e1rio.<\/p><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>rSync e comandos \/ SSH e automatiza\u00e7\u00e3o rSync e alguns comandos O\u00a0rSync, assim como o SCP, s\u00e3o \u00f3timas ferramentas para transfer\u00eancias de arquivos entre m\u00e1quinas, por\u00e9m, possuem uma defici\u00eancia, eles s\u00e3o inseguros. Originalmente, o rSync n\u00e3o utiliza nenhuma forma de criptografia, o que o torna um tanto ineficaz para backups via Internet. Entretanto, este problema [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[42,51,127],"tags":[279,448,449,447,204],"class_list":["post-730","post","type-post","status-publish","format-standard","hentry","category-leitura-recomendada","category-linux-linuxrs","category-sistemas-de-armazenamento","tag-backups","tag-com-rsync","tag-e-chaves","tag-remotos","tag-ssh"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=730"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/730\/revisions"}],"predecessor-version":[{"id":731,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/730\/revisions\/731"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=730"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=730"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}