Gostaria de baixar arquivos diretamente para um servidor hospedado, seja um que eu mesmo configurei ou um serviço hospedado como o Dropbox.
Por exemplo, quando faço o download de um podcast, em vez de baixá-lo para o meu computador e depois enviá-lo para o servidor, como posso fazer o download diretamente para a nuvem? Meu interesse aqui é reduzir o tráfego que estou usando em um plano de dados medido em meu laptop, por isso não quero que meu computador atue como um intermediário físico armazenando o arquivo em cache.
Idealmente, haveria alguma maneira de eu ter um link de download e solicitar que ele fosse diretamente para o meu servidor. Como posso fazer isso?
Eu percebo que esta questão está potencialmente envolvendo um "webapp" e potencialmente envolvendo "administração de servidor" e como meu objetivo é desligar meu computador do loop, posso ver pessoas dizendo que isso está fora do assunto e deveria estar em outro site . Meu problema é o seguinte: não sei se será uma solução webapp ou uma solução de servidor, mas sei que, independentemente disso, usarei um computador para fazer isso e estou substituindo uma função que está atualmente concluída no meu computador, então resolvi perguntar aqui. Se eu estava errado e isso definitivamente deveria estar em webapps, sinta-se à vontade para me avisar ou apenas migrá-lo.
Responder1
Você poderia:
- VNC no servidor, carregue um navegador e baixe o arquivo.
- SSH no servidor e faça essencialmente o mesmo, mas usando a CLI (curl? wget?). É possível usar SSH para executar um comando remoto; verresposta de ulidtko para um exemplo disso.
- Crie um aplicativo no servidor que possa enfileirar URLs de downloads de arquivos (um serviço web?). Ele pode pesquisar a fila, baixando cada arquivo até que a fila esteja vazia.
Responder2
Com CLI isso é incrivelmente fácil.
$ URL="http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg" $ ssh usuário@host remoto 'wget $URL' --2011-02-05 11:15:10-- http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg Resolvendo upload.wikimedia.org... 91.198.174.234 Conectando-se a upload.wikimedia.org|91.198.174.234|:80... conectado. Solicitação HTTP enviada, aguardando resposta... 200 OK Comprimento: 576216 (563K) [imagem/jpeg] Salvando em: `Red_Apple.jpg' 0K .......... .......... .......... .......... ......... 8% 327K 2s 50K .......... .......... .......... .......... ......... .17% 668 mil 1s 100K .......... .......... .......... .......... ......... 26% 1,23 milhões 1s 150K .......... .......... .......... .......... ......... 35% 1,23 milhões 1s 200K .......... .......... .......... .......... ......... 44% 697 mil 0s 250K .......... .......... .......... .......... ......... 53% 1,15 milhão 0s 300K .......... .......... .......... .......... ......... 62% 707 mil 0s 350K .......... .......... .......... .......... ......... 71% 1,13 milhões de 0s 400K .......... .......... .......... .......... ......... 79% 713 mil 0s 450K .......... .......... .......... .......... ......... 88% 1,13 milhões de 0s 500K .......... .......... .......... .......... ......... 97% 702 mil 0s 550K .......... .. 100% 3,13M=0,7s 05/02/2011 11:15:11 (777 KB/s) - `Red_Apple.jpg' salvo [576216/576216]
Aqui usamos duas ferramentas importantes:sshewget. A maior parte da saída é de wget
- mas é a saída da instância wget lançadana máquina remota; o arquivo é salvo no user
diretório inicial em remote-host
.
Responder3
agora, isso dependeria se você estiver usando hospedagem compartilhada, ou algo com muito mais liberdade. Se for o primeiro, teria que ser um pedaço feio.
Se você tivesse um VPS ou alguma outra hospedagem com um sistema próprio, você poderia configurar o que precisa - digamos, um cliente de torrent, algo comofluxo de torrentse você desejasse acesso total e/ou o método de cliente ssh/cli mencionado anteriormente (embora, se estiver entediado o suficiente, uma combinação de dropbox para carregar os links para o servidor, combinada com um script cron inteligente seria uma maneira maravilhosamente abusiva de dizer a um sistema quais arquivos abrir/baixar com o quê).
Você pode até compactar periodicamente seu download em partes para upload para economizar ainda mais largura de banda.
Responder4
Crie uma pasta chamada “downloads” no servidor de destino. Salve este código em um .php
arquivo e execute no servidor de destino:
<html>
<form method="post">
<input name="url" size="50" />
<input name="submit" type="submit" />
</form>
<?php
// maximum execution time in seconds
set_time_limit (24 * 60 * 60);
if (!isset($_POST['submit'])) die();
// folder to save downloaded files to. must end with slash
$destination_folder = 'downloads/';
$url = $_POST['url'];
$newfname = $destination_folder . basename($url);
$file = fopen ($url, "rb");
if ($file) {
$newf = fopen ($newfname, "wb");
if ($newf)
while(!feof($file)) {
fwrite($newf, fread($file, 1024 * 8 ), 1024 * 8 );
}
}
if ($file) {
fclose($file);
}
if ($newf) {
fclose($newf);
}
?>
</html>