使用PHP,我尝试连接到远程服务器并执行rsync命令:
$rsync_cmd = 'rsync -P -azv -e "ssh -p 1234" /dir/file.jpg root@remoteserver2:/dir/file.jpg';
exec('sudo ssh -tt root@remoteserver1 '.$rsync_cmd.' 2>&1', $output);
远程连接工作正常,但是当我包含我的rsync命令时,我得到了一个端口错误"ssh:连接到主机远程命令2端口22:连接拒绝"
正确使用的端口是1234,这个命令在终端(shell)上运行良好,但是php“exec”函数不想使用它(“ssh-p1234”),知道吗?
解决方案非常简单,尝试从命令中跳过-P
标志。
$rsync_cmd = 'rsync -azv -e \"ssh -p 1234\" /dir/file.jpg root@remoteserver2:/dir/file.jpg';
exec('sudo ssh -tt root@remoteserver1 '.$rsync_cmd.' 2>&1', $output);
它可以很好地使用rsync默认端口的-P
标志。
您是否在终端中通过将ssh
ing转换为Remote teserver1,然后执行rsync
命令,或者在一行中执行整个ssh
-to-rsync
命令来测试它?因为我很确定分两步做会奏效,但一步不行。这是因为当它作为一个步骤完成时,命令字符串被本地shell解析(包括执行引用和转义解释和删除),然后将其传递给远程shell(然后执行另一次引用和转义解释传递)和移除)。"ssh-p 1234"
中的那些双引号被本地shell解析并删除,因此它们不具有被远程shell解析和应用的预期效果。
如果我对这个问题的看法是正确的,那么解决办法很简单:避开双引号。这样,本地shell将解析并删除转义,并将双引号传递给unlested,以便远程shell可以看到并应用它们:
$rsync_cmd = 'rsync -P -azv -e \"ssh -p 1234\" /dir/file.jpg root@remoteserver2:/dir/file.jpg';
exec('sudo ssh -tt root@remoteserver1 '.$rsync_cmd.' 2>&1', $output);
在oh-my-zsh文件中,我通过更改. zshrc文件中的行来添加nvm。 插件=(git nvm)//添加了nvm 现在我看到了nvm,并在终端上使用它 但是当我改变下面看到的版本。 然后我关闭终端,打开一个新的,检查版本,它仍然显示使用以前的版本!它没有保持变化。 新窗口
rsync(Remote Sync)。你有两个目录想保持同步,可以使用 rsync 。要同步的目录可以是本地之间的目录,也可以是本地与远程之间的目录。 rsync 选项 源 目标 选项 r(recursive),递归复制,复制同步的文件不保留文件的权限,创建与修改时间。 a(archive),存档模式,可以递归复制,保留文件替身,复制同步的文件会保留文件的拥有者,用户名,时间,权限。 z(com
rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync。它的特性如下: 1、可以镜像保存整个目录树和文件系统。 2、可以很容易做到保持原来文件的权限、时间、软硬链接等等。 3、无须特殊权限即可安装。 4、优化的流程,文件传输效率高。 5、可以使用rcp、ssh等方式来传输文件,当然也可以通过直接的socket连接。 6、支持匿名传输。 Linux系统下如何使用rsync进行数据同步
null
问题内容: 我有这个命令 并且我需要添加特定的非标准端口32001。该怎么做?我当时在想一些标志之类的东西,但我不知道其语法。 问题答案: 根据此MSDN链接,您将使用。
本文向大家介绍linux下使用rsync同步目录,包括了linux下使用rsync同步目录的使用技巧和注意事项,需要的朋友参考一下 本文描述了linux下使用rsync单向同步两个机器目录的问题。 使用rsync同步后可以保持目录的一致性(含删除操作)。 数据同步方式 1、从主机拉数据 备机上启动的流程 同步命令: 参数说明: -a 参数,相当于-rlptgoD(-r 是递归 -l 是链接文件,意