PHP: Copiare File Remoti


Vi è mai capitato di dover spostare un file hostato sul vostro host ftp da una cartella all’altra?

Non sò, magari dovete fare uno script di backup allegati per forum oppure dovete copiare un file hostato da un altra parte, sul vostro host… Con questo script possiamo evitare la scocciatura di dover scaricare il file ed upparlo manualmente via ftp!

Tutto questo è possibile farlo tramite una semplicissa funzione:  😉

Iniziate a creare il file remote_copy_files.inc.php e dentro mettete il codice:

< ?php // copia i file remoti da un host all'altro!

  function copy_remote($remotefile, $localfile)
  {
    // file sorgente
    $srcfile = fopen($remotefile,"r");

    // controlla se si può aprire la scrittura
    if(!($fpl = fopen($localfile,"w")))
    {
      die("Impossibile aprire il File in Scrittura!");
    }

    // legge un chunk del file
    // scrive il chunk nel file locale
	 $tot = filesize($remotefile);
    while($contents = fread($srcfile,8192))
    {
      fwrite($fpl,$contents,strlen($contents));
		$car += strlen($contents);

		print(round($car / $tot * 100) ."% <br />");
    }

  // chiude il file remoto
  fclose($srcfile);

  // chiude il file locale
  fclose($fpl);

  }
?>

Per utilizzarla basterà includerla nel vostro file php con:

include ‘remote_copy_files.inc.php’;

e richiamarla con:

copy_remote(“posizione del file da copiare/file.zip”, “file.zip”);

That’s All, Folks! 😀

Tutti i File sono scaricabili da QUI: SCARICA



5 Commenti

  1. Shapur ha detto:

    Ciao, io avrei questa necessità, dovrei clonare un'intera cartella di circa 350mb contenente un sito wordpress in un'altra cartella identica ma con un nome diverso. Le cartelle devono trovarsi nello stesso percorso, l'hosting è aruba. Puoi darmi una dritta su come fare? Dato che fare il download e poi l'upload dell'intera cartella è una cosa praticamente impossibile anche perchè spesso l'host remoto mi chiude la connessione a metà della copia!!!

    Ti ringrazio anticipatamente

  2. StefanoV ha detto:

    Ciao Shapur,
    la funzione riportata su da me serve appunto a copiare i singoli file da una parte all’altra anche dello stesso hosting.

    Dovresti però ciclarti tutti i file della cartella e passare il percorso alla mia funzione, ad esempio con la funzione “glob” di php: http://php.net/manual/en/function.glob.php

    Altrimenti potresti anche usare un normale Client FTP, non ricordo quale sia, ma ricordo che ne esiste uno con il comando Copia-Incolla il tutto senza dover scaricare i file..

  3. StefanoV ha detto:

    Allora fai cosi, appena dopo l'apertura delle parentesi graffe vai a capo e scrivi:

    $localfile .= basename($remotefile);

    e la funzione la richiami cosi nel caso il file deve essere copiato in una cartella:

    copy_remote(”posizione del file da copiare/file.zip”, “cartella/”); // occhio alla slash finale obbligatoria

    oppure cosi se il file deve andare nella stessa cartella:

    copy_remote(”posizione del file da copiare/file.zip”, “”);

    Il codice l'ho scritto al volo, fammi sapere se ti funziona! 😉

  4. Max ha detto:

    Ottimo script, vorrei però effettuare una variazione, mi serve che la funzione richiamata sia

    copy_remote(”posizione del file da copiare/file.zip”, “assegna utomaticamente il nome originaledel file.zip”);

    Qualche aiutino?

  5. […] completo su: http://www.sv-design.org/blog/php-copiare-file-remoti/ Share and Enjoy: These icons link to social bookmarking sites where readers can share and […]

%d blogger hanno fatto clic su Mi Piace per questo: