¿Cuál es la mejor manera de mover archivos de un servidor a otro con PHP?
-
05-07-2019 - |
Pregunta
Quiero configurar un CRON que ejecute un script PHP que a su vez mueve el archivo XML (que contiene información no confidencial) de un servidor a otro.
Se me ha proporcionado el nombre de usuario / contraseña adecuados y deseo utilizar el protocolo SFTP. Los trabajos se ejecutarán diariamente. Existe la posibilidad de que un servidor sea Linux y el otro sea Windows. Ambos están en diferentes redes.
¿Cuál es la mejor manera de mover ese archivo?
Solución
Si ambos servidores estuvieran en Linux, podría usar rsync para cualquier tipo de archivo ( php, xml, html, binario, etc. Incluso si uno de ellos será Windows, hay puertos rsync para Windows.
Otros consejos
¿Por qué no intenta usar las funciones de FTP de PHP?
Entonces podrías hacer algo como:
// open some file for reading
$file = 'somefile.txt';
$fp = fopen($file, 'r');
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// try to upload $file
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
echo "Successfully uploaded $file\n";
} else {
echo "There was a problem while uploading $file\n";
}
// close the connection and the file handler
ftp_close($conn_id);
fclose($fp);
¿Por qué no usar shell_exec y scp ?
<?php
$output = shell_exec('scp file1.txt dvader@deathstar.com:somedir');
echo "<pre>$output</pre>";
?>
Tuve una situación similar. Después de algunos intentos, hice algo diferente
Tenemos 2 servidores, a (que tiene los archivos originales) b (los archivos deberían moverse a él)
Y seguro que los datos NO son confidenciales
Ahora, en el servidor a, hice un archivo para hacer lo siguiente cuando se le llama: 1. Elija el archivo para mover 2. Comprime el archivo 3. Imprima la ubicación del archivo .zip 4. Elimine el archivo .zip (y el archivo original) si se pasa el parámetro de eliminación
En el servidor b el archivo debe hacer: 1. Llame al archivo en un servidor 2. Descargue el archivo zip 3. Descomprima y copie en la ubicación adecuada 4. Llame a la función de eliminación en el servidor a
¡De esta manera tengo más control sobre mis funciones, pruebas y operaciones!