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?

¿Fue útil?

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!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top