Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中使用rsync将远程服务器文件夹与本地服务器文件夹同步?_Php_Shell_Ssh_Rsync - Fatal编程技术网

在php中使用rsync将远程服务器文件夹与本地服务器文件夹同步?

在php中使用rsync将远程服务器文件夹与本地服务器文件夹同步?,php,shell,ssh,rsync,Php,Shell,Ssh,Rsync,这段代码在php中不同步“测试”文件夹 php 但是在贝壳里 他工作了。因此,我需要使用php文件同步这些“测试”文件夹。我如何才能做到这一点?首先,您需要检查是否需要成为root用户或(sudo用户)才能运行rsync。如果是,那么 exec命令只有在同一用户在php cli上运行时才有效(而不是在apache用户的浏览器上) 将哪个用户登录到shell以运行rsync。如果是root用户或任何具有sudo权限的elavated权限用户,则当php脚本从浏览器运行时,apache/www数据用

这段代码在php中不同步“测试”文件夹

php

但是在贝壳里


他工作了。因此,我需要使用php文件同步这些“测试”文件夹。我如何才能做到这一点?

首先,您需要检查是否需要成为root用户或(sudo用户)才能运行rsync。如果是,那么
exec命令只有在同一用户在php cli上运行时才有效(而不是在apache用户的浏览器上)

将哪个用户登录到shell以运行rsync。如果是root用户或任何具有sudo权限的elavated权限用户,则当php脚本从浏览器运行时,apache/www数据用户可能无法使用此rsync命令。作为root用户,我将登录,然后首先尝试创建一个普通用户并通过它登录,然后尝试rsync如果你成功了,那么看看还有什么其他问题可能会很有趣,但是,如果您的访问/权限被拒绝,那么显然您至少不能在浏览器上运行此脚本。还有一件事,权限可能与rsync命令本身没有直接关系,而是与根用户在正常情况下拥有的/etc/test/文件夹有关。我想这也是我的问题。刚刚发现,这是问题吗?。
exec('/usr/bin/rsync -a /etc/test root@x.x.x.x:/etc/test');
rsync -a /etc/test/ root@x.x.x.x:/etc/test/