Migrar/Copiar archivos de un servidor a otro

Continuando con el tema de migraciones (la semana pasada mostré en un artículo cómo importar una base de datos de gran tamaño), esta vez quiero mostrarles un método simple para migrar contenido de un servidor a otro.

copy_files

Hago esto porque he visto que para migrar un sitio algunos “programadores” descargan todo el sitio en su computadora y luego lo suben al servidor destino, ya sea por FTP o a través del Cpanel.

Como en Bolivia el internet es un asco (y encima caro) a diferencia de nuestros países vecinos, pues no hace falta decir que el proceso mencionado es muy ineficiente.

Es por ello que un simple script en PHP va a simplificarnos este proceso y hará en segundos (o minutos dependiendo del tamaño del sitio) algo que nos tomaría mucho más tiempo en hacerlo de la forma anteriormente descrita.

¿Qué necesitamos?

Lo único que vamos a necesitar es:

–  La URL donde podamos descargar el archivo comprimido de lo que queremos transferir o copiar.

Script PHP que realizará el proceso de copiado a través de la función copy

Instrucciones

1) Lo primero es comprimir todo el contenido del sitio desde el cpanel.

2) Una vez tengamos el archivo zip del contenido a migrar, verificamos si este archivo es accesible desde la URL respectiva del servidor origen.

Por ejemplo, ingresando a:

www.tu-sitio-web-origen.com/contenido-comprimido.zip

debería aparecerte la opción de descargar el archivo. Si es así, esto quiere decir que la ruta es accesible de modo que podemos proceder con el siguiente paso.

Recuerda, no descargues el archivo puesto que eso es lo que queremos evitar. La idea es que el script haga el copiado del archivo directamente desde el servidor destino, sin necesidad de pasar por tu computadora en el proceso.

3) Lo siguiente es crear nuestro script PHP para realizar el proceso de copiado:

 

<?php
$remote_file_url = 'http://tu-sitio-web-origen.com/contenido-comprimido.zip';
$local_file = 'archivo-destino.zip';
$copy = copy($remote_file_url, $local_file);

if ($copy) {
    echo "Archivo copiado exitosamente!";
} else {
    echo "Operacion fallida: El archivo no se copio...";
}
?>

 

4) Una vez tengamos nuestro archivo PHP creado (por ejemplo: mi-script.php), lo subimos al servidor destino (por cpanel o FTP) y lo ejecutamos ingresando a la URL correspondiente.

Por ejemplo:

www.tu-sitio-web-destino.com/mi-script.php

Y eso es todo. Ahora sólo nos tocará esperar. Este tiempo dependerá mucho del tamaño del archivo comprimido a copiar y de la velocidad de tu servidor.

No te preocupes si tu velocidad de internet es lenta ya que el script, al estar en el servidor, utilizará la velocidad del hosting y no la tuya. Es decir que incluso si tienes una velocidad de 128 Kbps no debería sorprenderte el hecho de que el script copie varios Gigabytes en tan solo un par de segundos o minutos.

Una vez el script haya terminado su tarea y el mensaje que te aparezca sea de éxito, lo único que quedará por hacer es revisar en tu servidor destino la ubicación donde tienes el script para ver ahí mismo a tu nuevo archivo zip perfectamente copiado. A partir de ese momento, lo que resta quedará está en tus manos.

Espero que esto te haya sido útil. No te olvides de dejar tu comentario.

6 thoughts on “Migrar/Copiar archivos de un servidor a otro

  • Cordial saludo. Y como se hace para que reciba una imagen desde una aplicación móvil en Android, le baje el peso, y luego la redireccione a my servidor, ya que donde tengo el proyecto no me deja subir imágenes con peso superior a 2m, o si subo más de 10 imágenes al mismo tiempo, se cierra la conexión.

    • Hola Mauricio,

      Bueno se me ocurre que podrías hacer lo siguiente:

      1) Comprimir todas las imágenes de tu aplicación (digamos imagenes.zip) en tu computadora y luego subir el archivo zip a algún medio que te permita descargarla directamente, como por ejemplo “OneDrive” (aunque sinceramente no lo he usado). La idea es que tengas una URL que permita descargar tu archivo zip de forma directa (sin hacer clicks de por medio, ni captchas).
      2) Luego creas un scrip php con el codigo del artículo y reemplazas:
      http://tu-sitio-web-origen.com/contenido-comprimido.zip
      con la URL que descarga el zip de tus imagenes.
      3) Subes tu script php al servidor de tu proyecto, el cual estoy seguro que no pesará más de 1 KB, y lo ejecutas.

      Y listo! Tendrás un zip en tu servidor que contendrá todas tus imágenes. Luego sólo quedará descomprimir el zip en tu servidor,
      Espero que la info te sirva.

      Un saludo

    • Hola Sergio,

      Pienso que siempre es mejor copiar un sólo archivo zip en lugar de varios archivos de una carpeta, ya que cuando el copiado se complete es mucho más fácil comprobar la integridad de un sólo archivo que de varios.

      En el caso de que no puedas comprimir tus archivos de tu directorio manualmente entonces una alternativa sería crear otro script php, el cual se ejecutaria primero, para crear automáticamente un archivo zip o 7-zip de TODO el contenido de tu directorio. Recuerdo haber usado un algoritmo recursivo en stackoverflow que hacía eso y que me funcionó perfecto, así que tendrías que buscarlo por ahí o sino simplemente implementarlo por tu cuenta.

      Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *