用PHP将文件从一个服务器移动到另一个服务器的最佳方法是什么?

5

我想设置一个CRON,运行一个PHP脚本,将XML文件(包含非敏感信息)从一台服务器移动到另一台服务器。

我已经得到了正确的用户名/密码,并希望使用SFTP协议。这些作业将每天运行。有可能一台服务器是Linux,另一台是Windows。两者在不同的网络上。

最好的方法是什么?

4个回答

7

为什么不尝试使用PHP的FTP函数呢?

然后你可以像这样做:

// 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);

7
如果两个服务器都是Linux,则可以使用rsync来传输任何类型的文件(如php、xml、html、二进制等)。即使其中一个服务器是Windows,也有针对Windows的rsync端口。

6

为什么不使用 shell_execscp

(建议)

<?php
    $output = shell_exec('scp file1.txt dvader@deathstar.com:somedir');
    echo "<pre>$output</pre>";
?>

2
scp是一个非常方便和强大的工具,但可能需要一些配置: http://www.google.com/search?q=+password-less+SSH+login - Bob Fanger

0

我曾经遇到过类似的情况。 尝试了一些方法后,我做了一些不同的事情。

我们有两个服务器, a(拥有原始文件) b(应该将文件移动到其中)

当然,数据并不敏感。

现在,在服务器a上,我创建了一个文件,当调用时执行以下操作: 1. 选择要移动的文件 2. 压缩文件 3. 打印.zip文件位置 4. 如果传递删除参数,则删除.zip文件(和原始文件)

在服务器b上,该文件应执行以下操作: 1. 在a服务器上调用文件 2. 下载zip文件 3. 解压并将其复制到正确的位置 4. 在服务器a上调用删除函数

这样,我可以更好地控制我的功能、测试和操作!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接