Copiar directorio recursivo con PHP desde FTP

Pues eso, lo dejo por aquí para empezar a utilizar:

 //Recojo el valor de donde copio y donde tengo que copiar
    function copia($dirOrigen, $dirDestino, $connId)
    {
        //Creo el directorio destino
        ftp_mkdir($connId, $dirDestino);

        //abro el directorio origen
        if ($vcarga = opendir($dirOrigen))
        {
            while($file = readdir($vcarga)) //lo recorro enterito
            {
                if ($file != "." && $file != "..") //quito el raiz y el padre
                {
                    if (!is_dir($dirOrigen.$file)) //pregunto si no es directorio
                    {
                        $localFilePath  = $dirOrigen.$file;
                        $remoteFilePath = $dirDestino.$file;

                        // try to upload file
                        if(ftp_put($connId, $remoteFilePath, $localFilePath, FTP_ASCII)){
                            echo "File transfer successful - $localFilePath<br>";
                        }else{
                            echo "Error subiendo $localFilePath al FTP $remoteFilePath<br>";
                        }           
                    }else{
                        echo " — directorio — <br />"; //era directorio llamo a la función de nuevo con la nueva ubicación
                        copia($dirOrigen.$file."/", $dirDestino.$file."/", $connId);
                    }
                    echo "<br />";
                }
            }
            closedir($vcarga);
        }
    }

    $destino= './web/'.$webURL.'/public_html/';
    $origen = "./nicho/";

    copia($origen, $destino, $connId)

A tener en cuenta que $connId es el puntero a la conexión, os dejo también aquí la llamada para tenerlo completo, esta conexión se ha de realizar antes de llamar a la función como podrás suponer, ya que en la llamada a la función para copiar, ya se hace mención a la variable 😉

  // FTP server details
    $ftpHost   = 'vertutoriales.com';
    $ftpUsername = 'admin';
    $ftpPassword = 'ftppass';

    // open an FTP connection
    $connId = ftp_connect($ftpHost) or die("No pudo conectarse al server: $ftpHost");

    // try to login
    if(@ftp_login($connId, $ftpUsername, $ftpPassword)){
        echo "Conectado as $ftpUsername@$ftpHost";
    }else{
        echo "No pudo conectarse por FTP, revisa el usuario: $ftpUsername y el resto de parámetros";
    }

Carlos Dk

Apasionado por la enseñanza y el SEO

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.