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.

Como importar bases de datos pesadas con BigDump

Si estás tratando de importar una base de datos de gran tamaño (digamos unos 300 MB), incluso comprimida es posible que tengas problemas en importarla desde PhpMyAdmin.

Una solución podría ser simplemente crear un ticket en tu servicio de hosting para que ellos hagan la importación por tí. Esto puede ser útil para aquellas bases de datos que pesen varios Gigabytes.

Ahora bien, si tu base de datos no pesa tanto, una solución más simple podría ser usar el maravilloso script llamado BigDump. Para ello primero asegúrate de contar con el archivo sql o sql.gz de tu base de datos a importar.

bigdump-header-web

Pasos para usar BigDump

1) Subir tu archivo sql o sql.gz a tu servidor desde el gestor de archivos de tu Cpanel o por FTP (por ej: yo subiré mi archivo basededatos.sql.gz a una carpeta “tmp”).

2) Descargar el archivo bigdump. Puedes hacerlo desde AQUI o desde el sitio web del creador.

3) Descomprime el archivo bigdump.zip y abre el archivo bigdump.php con el editor de tu preferencia (Notepad++, Sublime Text, etc).

4) Modificar los valores de configuración del bigdump.php ubicados al inicio, los cuales corresponden al nombre de la base de datos, el usuario y contraseña de la misma.

db_config
Ejemplo de configuración

5) Modificar la variable $upload_dir para incluir la carpeta donde hemos subido nuestro archivo sql.gz (si lo subiste a la raíz entonces sáltate al siguiente paso). En mi caso, la carpeta donde subí mi archivo basededatos.sql.gz se llama “tmp”

upload_dir

6) Ejecutar el script en tu servidor (por ejemplo: misitio.com/bigdump.php)

Si toda la información que configuraste es correcta, debería aparecerte algo así:

index
(click en la imagen para ampliar)

Como se puede apreciar, mi archivo basededatos.sql.gz aparece listado, de modo que lo único que falta por hacer es simplemente hacer click en Start Import y esperar a que la importación termine.

Dependiendo del tamaño del archivo, es posible que este proceso tome desde algunos minutos hasta horas enteras. En mi caso, tomó alrededor de 40 minutos procesar un archivo de unos 250 MB (comprimido pesa 30 MB)

completado
(click en la imagen para ampliar)

Como ven, este simple y poderoso script puede sacarnos de un apuro como lo es la importación de base de datos de gran tamaño.