Enviar archivos entre servidores sin usar SSH (usando FTP)

Cuando hay que cambiar de servidor de hosting, lo que muchos hacen es bajarse todos los archivos a su PC y de ahí volver a subirlos al nuevo hosting. si tiene una conexión ADSL de 5 MEGAS y tienes que hacer esa operación con una web de 3 giga de información,  estamos hablando de un promedio de 1 a 2 horas en bajada, y posiblemente el doble o más en subirlo al nuevo hosting.  y si eso es si es que no ocurre nada malo como cortarse la conexión o haberse equivocado de archivo 😐

A esto hay que sumarle el hecho que se pierden los permisos de archivos que se manejan en sistema LINUX (propio de la mayoría de hosting).

Yo lo que usualmente hago es en el servidor ORIGIEN lo comprimo en TAR.GZ (que si mantienen los permisos de LINUX), luego me iba al servidor DESTINO y usando comando SSH específicamente el wget (aqui un tutorial de como instalar un CMS desde SSH) lo transfería y finalmente lo descomprimía. esa operación no me llega ni 10 minutos en realizarlo con archivos de 4 o5 Gigas…

Pero que ocurre cuando en el servidor DESTINO no se tiene acceso al SSH?, no hay manera de importar el archivo de un lado a otro a menos que hagas la operación de bajar y subir o se lo pidas al servicio de hosting (y si es que pueden realizarlo)

Para esos casos es que se utiliza el ingenio y un poco de código de PHP para crear un script que pueda enviar cualquier archivo desde un servidor a otro, pero con una conexión FTP, es decir, le digo al SERVER ORIGEN que se conecta con el SERVER DESTINO y que le transfiera el archivo, nunca pasará por mi PC, es un equivalente a usar el comando wget de SSH 🙂

El Script:

<?php
//El Script debe ir donde se encuentra el archivo a ENVIAR, es decir en el SERVER ORIGEN
$file = 'backup.tar';  //Archivo local a ENVIAR
$remote_file = 'backup_copiado.tar'; //Nombre con el que se grabará remotamente, por si desean cambiarle

// Conexión Básica remota del servidor remoto, es decir, donde se va a colocar el archivo
$ftp_server="servidordestino.com";
$ftp_user_name= "usuario_ftp";
$ftp_user_pass= "password_ftp";

$conn_id = ftp_connect($ftp_server);

$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// subir Archivo al servidor Remoto
if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
 echo "Enviado Correctamente $file\n";
} else {
 echo "Problemas con la subida $file\n";
}

ftp_close($conn_id);
?>

Y con ese Script harán el trabajo de horas en minutos.

3 Comentarios para “Enviar archivos entre servidores sin usar SSH (usando FTP)”

  1. Yo en vez de usar wget, uso scp.
    Pero me apunto la idea de este código, es muy util.

  2. I-N-C-R-E-I-B-L-E gracias

  3. Luego de 5 minutos esperando me dice Problemas con la subida archivo.tar.gz

Deja una respuesta

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