¿Cómo puedo descargar un archivo directamente a un servidor web?

¿Cómo puedo descargar un archivo directamente a un servidor web?

Me gustaría descargar archivos directamente a un servidor alojado, ya sea uno que configuré yo mismo o un servicio alojado como Dropbox.

Por ejemplo, cuando descargo un podcast, en lugar de descargarlo a mi computadora y luego subirlo al servidor, ¿cómo puedo descargarlo directamente a la nube? Mi interés aquí es reducir el tráfico que estoy usando a través de un plan de datos medidos en mi computadora portátil, por lo que no quiero que mi computadora actúe como un intermediario físico almacenando en caché el archivo.

Idealmente, habría alguna forma de tener un enlace de descarga y decirle que vaya directamente a mi servidor. ¿Cómo puedo lograr esto?

Me doy cuenta de que esta pregunta potencialmente involucra una "aplicación web" y potencialmente involucra una "administración del servidor" y dado que mi objetivo es desconectar mi computadora, puedo ver a personas que dicen que esto está fuera de tema y debería estar en otro sitio. . Mi problema es este: no sé si será una solución de aplicación web o una solución de servidor, pero sí sé que de todos modos usaré una computadora para hacerlo y estoy reemplazando una función que ya está realizada. en mi computadora, así que pensé en preguntarlo aquí. Si me equivoqué y esto definitivamente debería estar en webapps, no dudes en hacérmelo saber o simplemente migrarlo.

Respuesta1

Tú podrías:

  • VNC en el servidor, cargue un navegador y descargue el archivo.
  • SSH en el servidor y haga esencialmente lo mismo pero usando la CLI (¿curl? ¿wget?). Es posible utilizar SSH para ejecutar un comando remoto; verLa respuesta de Ulidtko para un ejemplo de esto..
  • Cree una aplicación en el servidor que pueda poner en cola las URL de descargas de archivos (¿un servicio web?). Puede sondear la cola y descargar cada archivo hasta que la cola esté vacía.

Respuesta2

Con CLI esto es increíblemente fácil.

$ URL="http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg"
$ ssh usuario@host-remoto 'wget $URL'

--2011-02-05 11:15:10-- http://upload.wikimedia.org/wikipedia/commons/1/15/Red_Apple.jpg
Resolviendo upload.wikimedia.org... 91.198.174.234
Conectándose a upload.wikimedia.org|91.198.174.234|:80... conectado.
Solicitud HTTP enviada, esperando respuesta... 200 OK
Longitud: 576216 (563K) [imagen/jpeg]
Guardando en: `Red_Apple.jpg'

     0K .......... .......... .......... .......... ......... 8% 327K 2s
    50K .......... .......... .......... .......... ......... 17% 668K 1s
   100K .......... .......... .......... .......... ......... 26% 1,23 millones 1s.
   150K .......... .......... .......... .......... ......... 35% 1,23 millones 1s.
   200K .......... .......... .......... .......... ......... 44% 697K 0s.
   250K .......... .......... .......... .......... ......... 53% 1,15 millones de ceros.
   300K .......... .......... .......... .......... ......... 62% 707K 0s.
   350K .......... .......... .......... .......... ......... 71% 1,13 millones de ceros.
   400K .......... .......... .......... .......... ......... 79% 713K 0s.
   450K .......... .......... .......... .......... ......... 88% 1,13 millones de ceros.
   500K .......... .......... .......... .......... ......... 97% 702K 0s.
   550K ........ 100% 3,13M=0,7s

2011-02-05 11:15:11 (777 KB/s) - `Red_Apple.jpg' guardado [576216/576216]

Aquí utilizamos dos herramientas importantes:sshyobtener. La mayor parte del resultado proviene de wget, pero es el resultado de la instancia de wget lanzada.en la máquina remota; el archivo se guarda en userel directorio de inicio de remote-host.

Respuesta3

Ahora bien, esto dependerá de si estás usando alojamiento compartido o algo con mucha más libertad. Si es lo primero, tendría que ser un problema feo.

Si tuviera un VPS o algún otro alojamiento con un sistema para usted solo, podría configurar lo que necesita, digamos un cliente de torrent, algo así comotorrenteflujosi desea acceso completo y/o el método de cliente ssh/cli antes mencionado (aunque, si está lo suficientemente aburrido, una combinación de Dropbox para cargar los enlaces al servidor, combinado con un script cron inteligente sería una forma maravillosamente abusiva de decirle a un sistema qué archivos abrir/descargar y con qué).

Es posible que incluso puedas comprimir periódicamente tu descarga en fragmentos para cargarla y ahorrar aún más ancho de banda.

Respuesta4

Cree una carpeta llamada "descargas" en el servidor de destino. Guarde este código en un .phparchivo y ejecútelo en el 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> 

información relacionada