<?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>idealMind &#187; download</title>
	<atom:link href="http://blog.idealmind.com.br/tag/download/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.idealmind.com.br</link>
	<description>Soluções que facilitam a sua vida</description>
	<lastBuildDate>Mon, 26 Dec 2011 00:11:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Como criar um link simbólico no ubuntu linux</title>
		<link>http://blog.idealmind.com.br/geral/como-criar-um-link-simbolico-no-ubuntu-linux/</link>
		<comments>http://blog.idealmind.com.br/geral/como-criar-um-link-simbolico-no-ubuntu-linux/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 03:15:28 +0000</pubDate>
		<dc:creator>Wellington Ribeiro</dc:creator>
				<category><![CDATA[geral]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[download via http]]></category>
		<category><![CDATA[link simbólico]]></category>
		<category><![CDATA[servidor apache]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[ubuntu linux]]></category>

		<guid isPermaLink="false">http://blog.idealmind.com.br/?p=322</guid>
		<description><![CDATA[Exemplo de como criar um link simbólico de um arquivo em outra pasta do servidor e disponibilizar para download via http.]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Ontem eu tive a necessidade de criar um link simbólico, de forma a disponibilizar o download de um arquivo dentro de uma pasta na raíz do servidor linux.</p>
<p>Para ser mais específico, eu precisei disponibilizar o download do backup do banco de dados, via http, para usuários que não têm acesso ssh e ftp ao servidor, mas que precisam da ultima versão do backup do banco de dados. Porém, o backup fica armazenado em uma pasta dentro da raíz do servidor, de forma que não seria muito prático apenas colocar o backup do banco dentro de uma pasta real que possibilitasse o download direto via http.</p>
<p>A solução foi criar um link simbólico, para que quando os usuários solicitassem o acesso ao arquivo via http, fosse disponibilizado o download do arquivo original, na pasta original.</p>
<p>Vamos à prática.</p>
<p>Supondo que você tenha um arquivo, tipo, no meu caso, backupbd.sql.gz, na pasta /home/backups/, e você quer disponibilizar o download via http, através de um link http://www.exemplo.com.br/backup/backupdb.sql.gz, desse mesmo arquivo.</p>
<p>Se a pasta raíz do seu site se localiza em /home/exemplo ( http://www.exemplo.com.br aponta para /home/exemplo ), você vai criar a pasta backup dentro desse diretório.</p>
<p>$ cd /home/exemplo<br />
home/exemplo$ mkdir backup<br />
home/exemplo$ cd backup<br />
home/exemplo/backups$ ln -s /home/backups/backupbd.sql.gz backupdb.sql.gz</p>
<p>Pronto, você fez um link simbólico, onde se os usuários acessarem http://www.exemplo.com.br/backup/backupdb.sql.gz, será disponibilizado o download do arquivo backupbd.sql.gz localizado em /home/backups/.</p>
<p>Para criar um link simbólico de uma pasta, você usa a mesma lógica.</p>
<p>No próximo post, vou mostrar, ainda em cima deste exemplo, como proteger o download do arquivo via http, solicitando uma senha, através do .htaccess e .htpasswd.<br />
<h3 class='related_post_title'>Posts Relacionados:</h3>
<ul class='related_post'>
<li><a href='http://blog.idealmind.com.br/geral/como-proteger-arquivos-e-pastas-com-senha-no-ubuntu-linux-usando-htaccess-e-htpasswd/' title='Como proteger arquivos e pastas com senha no ubuntu linux usando htaccess e htpasswd'>Como proteger arquivos e pastas com senha no ubuntu linux usando htaccess e htpasswd</a></li>
<li><a href='http://blog.idealmind.com.br/mysql/como-instalar-facilmente-o-lamp-apache-mysql-e-php-no-ubuntu-com-taskse/' title='Como instalar facilmente o LAMP (apache, mysql e php) no ubuntu com tasksel'>Como instalar facilmente o LAMP (apache, mysql e php) no ubuntu com tasksel</a></li>
<li><a href='http://blog.idealmind.com.br/ubuntu/qual-a-diferenca-entre-apt-get-e-aptitude/' title='Qual a diferença entre apt-get e aptitude'>Qual a diferença entre apt-get e aptitude</a></li>
<li><a href='http://blog.idealmind.com.br/ubuntu/como-pesquisar-por-arquivos-em-pastas-e-subpastas/' title='Como pesquisar por arquivos em pastas e subpastas'>Como pesquisar por arquivos em pastas e subpastas</a></li>
<li><a href='http://blog.idealmind.com.br/geral/forcar-download-em-servidor-remoto-como-amazon-s3-com-opcao-salvar-como/' title='Forçar download em servidor remoto como Amazon S3 com opção &#8220;salvar como&#8221;'>Forçar download em servidor remoto como Amazon S3 com opção &#8220;salvar como&#8221;</a></li>
</ul>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.idealmind.com.br/geral/como-criar-um-link-simbolico-no-ubuntu-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Forçar download em servidor remoto como Amazon S3 com opção &#8220;salvar como&#8221;</title>
		<link>http://blog.idealmind.com.br/geral/forcar-download-em-servidor-remoto-como-amazon-s3-com-opcao-salvar-como/</link>
		<comments>http://blog.idealmind.com.br/geral/forcar-download-em-servidor-remoto-como-amazon-s3-com-opcao-salvar-como/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 03:26:46 +0000</pubDate>
		<dc:creator>Wellington Ribeiro</dc:creator>
				<category><![CDATA[geral]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[amazon S3]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[httpd.conf]]></category>
		<category><![CDATA[mod_proxy]]></category>
		<category><![CDATA[mod_rewrite]]></category>
		<category><![CDATA[mod_rewrite apache]]></category>
		<category><![CDATA[rewrite htaccess]]></category>
		<category><![CDATA[rewrite mod apache]]></category>
		<category><![CDATA[salvar como]]></category>
		<category><![CDATA[save as]]></category>

		<guid isPermaLink="false">http://blog.idealmind.com.br/?p=23</guid>
		<description><![CDATA[Este artigo mostra como fazer para que apareça a opção "salvar como" para downloads de arquivos hospedados em servidores remotos, como Amazon S3.]]></description>
			<content:encoded><![CDATA[<div id="HOTWordsTxt" name="HOTWordsTxt"><p>Olá!</p>
<p>Este artigo mostra<strong> como fazer para que apareça a opção &#8220;salvar como&#8221; para downloads de arquivos hospedados em servidores remotos</strong>, o que é muito útil para se poupar recursos do servidor.</p>
<p>Para poder utilizar a solução apresentada aqui, será necessário que o Apache esteja com os módulos mod_rewrite e mod_proxy habilitados, ou que você possa editar o arquivo httpd.conf do servidor Apache (ou solicitar as configurações ao seu serviço de hospedagem).</p>
<p>Há um certo tempo atrás a equipe do <a title="meuInglês" href="http://www.meuingles.com/" target="_blank">meuInglês</a> decidiu hospedar os arquivos pesados do site, como FLV e MP3, e as imagens, nos servidores <a title="Amazon S3" href="http://aws.amazon.com/s3/" target="_blank">Amazon S3</a>. As vantagens eram muitas, tais como a rapidez no carregamento dos arquivos, o baixo custo e a segurança envolvidos. Tudo era maravilhoso, até que esbarrei com as opções de download que o <a title="meuInglês" href="http://www.meuingles.com/" target="_blank">meuInglês</a> oferece aos seus usuários. Outros sites concorrentes também hospedam seus arquivos na Amazon S3, e a opção de download para seus usuários é de clicar com o botão direito do mouse para selecionar salvar o destino do link (pelo menos com instrução, para facilitar a vida de usuários menos experientes).</p>
<p>Particularmente, acho esta solução muito deselegante, pois é tão cômodo para o usuário simplesmente clicar no botão de download e aparecer uma janelinha pedindo para &#8220;Salvar o arquivo como&#8230;&#8221;. Comecei a googlar pesquisando uma solução.</p>
<p>A primeira coisa que fiz foi usar a função <a title="função fopen() do php" href="http://br.php.net/manual/pt_BR/function.fopen.php" target="_blank">fopen()</a> do php com permissão a acessar arquivos remotos, e depois setar o header do php para disponibilizar o arquivo como <em>attachment</em>. Logo vi em conjunto com a equipe de tecnologia que isso não seria uma solução, mas sim um problema, pois a função fopen() baixava os arquivos da Amazon S3 para o servidor, e depois disponibilizava o arquivo para o usuário, logo, iríamos pagar os custos de tranferência de dados duas vezes: uma pela transferência dos arquivos da Amazon S3 para o servidor, e depois do servidor para o usuário, além do tempo de download ser a soma desses dois downloads.</p>
<p>Perdi três preciosos dias buscando uma solução, pesquisando, pensando, tentando várias coisas que encontrei, tais como setar cabeçalhos (HTTP Header) diretamente nos arquivos, ou ao subir os arquivos para a Amazon S3&#8230; Estava quase desistindo, quando encontrei um <a title="Apache e .htdocs" href="http://www.askapache.com/htaccess/pdf-cookies-headers-rewrites.html" target="_blank">site maravilhoso com ótimas dicas de configurações do Apache e do .htdocs</a> (salve nos seus favoritos! Você vai precisar!).</p>
<p>Então saí da câmara escura e comecei a enxergar novos horizontes.</p>
<p>Criei uma pasta downloads na raíz do site e dentro dela coloquei um arquivo .htacces com a seguinte configuração:</p>
<pre class="brush: plain; title: ; notranslate">

IndexIgnore *
RewriteEngine On

RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^mp3/(.*)$ http://seubucket.s3.amazonaws.com/pasta/$1?%1 [P,E=PERMITE:1]

RewriteCond %{QUERY_STRING} (.*)
RewriteRule ^pdf/(.*)$ http://seubucket.s3.amazonaws.com/pasta/$1?%1 [P,E=PERMITE:1]

RewriteCond %{ENV:PERMITE} !1$ [NC]
RewriteRule .* - [R=404,NS,L]

Header set Content-Disposition &quot;attachment;&quot; env=PERMITE
</pre>
<p><strong>Explicando:</strong></p>
<ol>
<li>A primeira linha simplesmente não permite listar os arquivos do diretório.</li>
<li>A segunda linha habilita o <a title="mod_rewrite" href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html" target="_blank">módulo rewrite</a> do apache.</li>
<li>A quarta linha (assim como a sexta) pega os parâmetros passados pela url (como a autenticação para arquivos protegidos na Amazon S3) através de uma condição Rewrite e coloca no lugar de %1 na linha seguinte.</li>
<li>A quinta linha (assim como a sétima) faz o rewrite, ou seja, reescreve a url recebida para a url original. A mágica acontece ao setar a <em>flag </em>P, que diz que a url será acessada via<a title="mod_proxy" href="http://httpd.apache.org/docs/2.2/mod/mod_proxy.html" target="_blank"> mod_proxy</a> do Apache. Nesta linha também é setada uma variável PERMITE, que terá o valor 1 se a condição RewriteRule for satisfeita.</li>
<li>Na décima linha, verifico se a varíavel PERMITE possui valor diferente de 1, através de uma condição Rewrite, e, se for o caso, apresento uma página de erro 404, e ecerro a execução do código (<em>flag</em> L).</li>
<li>Finalmente, na linha 13, se o código chegar até lá (ou seja, pelo menos uma das duas condições foi satisfeita =&gt; PERMITE = 1), defino o cabeçalho do conteúdo como attachment, ou seja, para download, e então aparece aquela janelinha linda de &#8220;Salvar arquivo como&#8230;&#8221;</li>
</ol>
<p>Desta forma, para fazer download do arquivo com a opção &#8220;Salvar como&#8221;, basta que a url do botão/link de download seja no formato</p>
<pre class="brush: plain; title: ; notranslate">

http://www.exemplo.com.br/downloads/mp3/nomedoarquivo.mp3?par=XXX&amp;par=YYY ou

http://www.exemplo.com.br/downloads/pdf/nomedoarquivo.pdf?par=XXX&#038;par=YYY

(os parâmetros são opcionais dependendo do que você estiver fazendo)
</pre>
<p>Se o arquivo</p>
<pre class="brush: plain; highlight: [1]; title: ; notranslate">

http://seubucket.s3.amazonaws.com/pasta/nomedoarquivo.pdf?par=XXX&#038;par=YYY
</pre>
<p>existir aparecerá a janela de download, caso contrário, será exibido um erro 404.</p>
<p>Enfim, como disse no começo, para isso funcionar, o servidor Apache deve estar com os módulos mod_rewrite e mod_poxy, e mod_proxy_http habilitados. Para isso, certifique-se de que as seguintes linhas do httpd.conf estejam descomentadas:</p>
<pre class="brush: plain; title: ; notranslate">

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
</pre>
<p>Eu usei Apache 2.2.X e não testei em outras versões.</p>
<p>Espero que este artigo tenha sido útil para você, e, se era isso o que você estava procurando, fico feliz se você encontrou a solução em menos de 3 dias! <img src='http://blog.idealmind.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Até a proxima!<br />
<h3 class='related_post_title'>Posts Relacionados:</h3>
<ul class='related_post'>
<li><a href='http://blog.idealmind.com.br/geral/como-proteger-arquivos-e-pastas-com-senha-no-ubuntu-linux-usando-htaccess-e-htpasswd/' title='Como proteger arquivos e pastas com senha no ubuntu linux usando htaccess e htpasswd'>Como proteger arquivos e pastas com senha no ubuntu linux usando htaccess e htpasswd</a></li>
<li><a href='http://blog.idealmind.com.br/mysql/como-instalar-facilmente-o-lamp-apache-mysql-e-php-no-ubuntu-com-taskse/' title='Como instalar facilmente o LAMP (apache, mysql e php) no ubuntu com tasksel'>Como instalar facilmente o LAMP (apache, mysql e php) no ubuntu com tasksel</a></li>
<li><a href='http://blog.idealmind.com.br/geral/como-criar-um-link-simbolico-no-ubuntu-linux/' title='Como criar um link simbólico no ubuntu linux'>Como criar um link simbólico no ubuntu linux</a></li>
<li><a href='http://blog.idealmind.com.br/php/salvar-como-em-php-download-de-arquivos/' title='Salvar como em php &#8211; download de arquivos'>Salvar como em php &#8211; download de arquivos</a></li>
</ul>
</div>]]></content:encoded>
			<wfw:commentRss>http://blog.idealmind.com.br/geral/forcar-download-em-servidor-remoto-como-amazon-s3-com-opcao-salvar-como/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

