<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Web Kaput &#187; Bash</title>
	<atom:link href="http://www.webkaput.com/category/bash/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webkaput.com</link>
	<description>A Web Desconstruída</description>
	<lastBuildDate>Thu, 03 Jun 2010 21:15:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Backup em servidor remoto.</title>
		<link>http://www.webkaput.com/backup-em-servidor-remoto/</link>
		<comments>http://www.webkaput.com/backup-em-servidor-remoto/#comments</comments>
		<pubDate>Tue, 27 Feb 2007 15:42:20 +0000</pubDate>
		<dc:creator>João José</dc:creator>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Ferramentas]]></category>

		<guid isPermaLink="false">http://www.webkaput.com/backup-em-servidor-remoto/</guid>
		<description><![CDATA[Confesso que, como muita gente, tenho sido desleixado no que toca a backups dos meus sites. Ontem depois do segundo amargo de boca que me custou 6 horas de trabalho para tentar pôr tudo no lugar decidi finalmente arranjar uma solução satisfatória (ou seja automática) para efectuar backups.
Lista de ingredientes:

2 servidores com acesso shell
Um cliente [...]]]></description>
			<content:encoded><![CDATA[<p>Confesso que, como muita gente, tenho sido desleixado no que toca a backups dos meus sites. Ontem depois do segundo amargo de boca que me custou 6 horas de trabalho para tentar pôr tudo no lugar decidi finalmente arranjar uma solução satisfatória (ou seja automática) para efectuar backups.</p>
<p><strong>Lista de ingredientes:</strong></p>
<ul>
<li>2 servidores com acesso shell</li>
<li>Um cliente ssh</li>
<li>10 minutinhos que podem poupar muitas horas de trabalho</li>
</ul>
<p>Se ainda não têm acesso shell ao vosso servidor enviem um email ao vosso host para vos dar. Se o host não o permitir acho que está na altura de mudarem de host <img src='http://www.webkaput.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . Entretanto se quiserem mudar ou apenas adquirir o servidor para os backups podem encontrar uma opção baratuxa <a href="http://www.bluehost.com/track/joaojose/CODE5">aqui</a> (link afiliado).</p>
<p>Ok, agora que já têm dois servidores com acesso shell vamos ao que interessa. Abram o vosso cliente ssh ( Se não têm recomendo o <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">Putty</a>) e liguem-se aos vossos sites, um em cada janela.</p>
<p><strong>1- De forma a poder aceder remotamente ao servidor de forma automática vamos ter de autorizar uma ligação do servidor local (onde temos os ficheiros) ao remoto (para onde queremos enviar o backup).</strong></p>
<p>Para isso no servidor local corram o seguinte comando:</p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:100%;">
<div style="">Code (bash)</div>
<p>ssh-keygen -t rsa</p></div>
<p>Carreguem enter em todos os prompts até voltarem à linha de comando.</p>
<p>No meu caso é este o output:</p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:300px;">
<div style="">Code (bash)</div>
<p>
Generating public/private rsa key pair.<br />
Enter file in which to save the key (/root/.ssh/id_rsa):<br />
Enter passphrase (empty for no passphrase):<br />
Enter same passphrase again:<br />
Your identification has been saved in /root/.ssh/id_rsa.<br />
Your public key has been saved in /root/.ssh/id_rsa.pub.<br />
The key fingerprint is:<br />
**************** root@as.webkaput.com<br />
&nbsp;</div>
<p>De seguida vamos abrir o ficheiro id_rsa.pub de forma a copiar a chave indentificativa da nosso servidor. Usando o  editor <a href="http://www.computerhope.com/unix/uvi.htm">VI</a>.</p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:100%;">
<div style="">Code (bash)</div>
<p>vi /root/.ssh/id_rsa.pub</p></div>
<p>Não se esqueçam de mudar o caminho do ficheiro para o vosso caso específico.</p>
<p>No VI fazemos:</p>
<p>seleccionar texto com o rato -> botão direito do rato -> ESC -> :q!</p>
<p>Isto vai copiar o texto e vai sair do editor sem gravar o ficheiro.</p>
<p>Saltamos agora para a janela do servidor remoto. Neste servidor vamos ter de encontrar  a directoria /.ssh usando o comando <a href="http://www.computerhope.com/unix/ufind.htm">find</a>.</p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:100%;">
<div style="">Code (bash)</div>
<p>
find . -type d -name &#8216;.ssh&#8217; -print<br />
&nbsp;</div>
<p>Depois de encontrada a directoria /.ssh vamos criar um ficheiro com o nome authorized_keys.</p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:100%;">
<div style="">Code (bash)</div>
<p>
vi /caminho-encontrado/.ssh/authorized_keys<br />
&nbsp;</div>
<p>No VI para copiar e gravar fazemos:</p>
<p>Botão direito do rato -> ESC ->:wq</p>
<p>E pronto o nosso servidor local já tem acesso ao nosso servidor remoto.</p>
<p><strong>2-Vamos agora fazer um backup da nossa base de dados mysql e enviá-la para o servidor remoto</strong></p>
<p>Em cada um dos servidores criamos uma directoria usando o <a href="http://www.computerhope.com/unix/umkdir.htm">mkdir</a> para colocar o ficheiro por exemplo:</p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:100%;">
<div style="">Code (bash)</div>
<p>
mkdir /home/mysqlbak<br />
&nbsp;</div>
<p>Se ainda não têm uma directoria de cronjobs no servidor local criem uma abaixo da raiz da pasta web (normalmente www ou public_html) ou seja uma pasta que não está acessível via web. De seguida cria-se o script que cria e exporta o backup.</p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:100%;">
<div style="">Code (bash)</div>
<p>
mkdir /home/cronjobs<br />
vi /home/cronjobs/backup.sh<br />
&nbsp;</div>
<p>No VI escrevem:</p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:100%;">
<div style="">Code (bash)</div>
<p>
mysqldump -u USERNAME -pPASSWORD nome-da-db &gt;/home/mysqlbak/mysqldump.sql<br />
rsync -avz /home/mysqlbak/mysqldump.sql username@ip-do-servidor-remoto:/home/mysqlbak/mysqldump.sql<br />
&nbsp;</div>
<p>ESC->:wq</p>
<p>O comando rsync tem a vantagem de sincronizar os ficheiros entre servidores ou seja não transfere a totalidade do ficheiro.</p>
<ul>
<li>USERNAME é o username de acesso à vossa base de dados</li>
<li>PASSWORD é a password de acesso à vossa base de dados (e sim é mesmo -pPASSWORD tudo pegado)</li>
<li>nome-da-db é o nome da vossa base de dados. Se quiserem fazer um backup de todas as bases de dados coloquem &#8211;all-databases. </li>
<li>username é o username de acesso shell ao servidor remoto</li>
</ul>
<p>Ok, temos o nosso script criado. Para testar o script vamos primeiro ter de mudar as permissões do ficheiro. Isto pode fazer-se usando o chmod.</p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:100%;">
<div style="">Code (bash)</div>
<p>
chmod ug=rwx /home/cronjobs/backup.sh<br />
&nbsp;</div>
<p>De seguida corremos o script.</p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:100%;">
<div style="">Code (bash)</div>
<p>
source /home/cronjobs/backup.sh<br />
&nbsp;</div>
<p>E pronto! Se não houver erros devemos ter agora o ficheiro /home/mysqlbak/mysqldump.sql em ambos os servidores.</p>
<p><strong>3- Finalmente vamos fazer um cronjob para executar esta tarefa de hora a hora.</strong></p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:100%;">
<div style="">Code (bash)</div>
<p>
crontab -e<br />
&nbsp;</div>
<p>E adicionamos a seguinte linha.</p>
<div class="ch_code_container" style="font-family: monospace;white-space: nowrap;height:100%;">
<div style="">Code (bash)</div>
<p>
0&nbsp; &nbsp; &nbsp; &nbsp;*&nbsp; &nbsp; &nbsp; &nbsp;*&nbsp; &nbsp; &nbsp; &nbsp;*&nbsp; &nbsp; &nbsp; &nbsp;*&nbsp; &nbsp; &nbsp; &nbsp;/home/cronjobs/backup.sh<br />
&nbsp;</div>
<p>ESC->:wq</p>
<p>E pronto já podemos dormir mais descansados <img src='http://www.webkaput.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.webkaput.com/backup-em-servidor-remoto/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
