浏览器上的 Rsync 不起作用

Rsync on a browser does not work

我正在尝试使用以下代码将文件从一台服务器传输到另一台服务器。

rsync -avz -e "ssh -i /root/.ssh/somekey" /var/www/admin/somefiles.txt root@xxx.xxx.xxx.xxx:/var/www/html_public/some-folder/

如果我在 putty 上执行此操作,它工作得很好,但如果我在 php 页面上执行 shell_exec 这段代码,在浏览器上 运行 页面上执行此代码。这是行不通的。它 returns 一个空字符串。

我希望有人能帮我解决这个问题。提前致谢。

首先,您需要检查 运行ning rsync 是否需要成为 root 或(sudo 用户)。

如果是,则 exec() 命令仅在同一用户在 php-cli 上(不是 Apache 用户在浏览器上)运行 时才有效。即您登录哪个用户 shell 运行 rsync.

如果它是 root 或任何具有 sudo 权限的高权限用户,则此 rsync 命令可能无法用于 apache/www-data 正在工作的用户 php 脚本 [=31] =] 来自浏览器。

所以你尝试创建一个普通用户并通过它登录,然后尝试 rsync 如果你成功了那么看看还有什么其他问题可能很有趣,但是如果你得到 access/permission 被拒绝那么显然你不能 运行 这个脚本 at-least 在浏览器上。

除此之外,One more thing 权限可能与 rsync 命令本身没有直接关系,但与正常情况下由 root 用户拥有的文件夹 /etc/test/ 相关。