Linux 两个非登录用户之间的rsyncing
我有两台机器Linux 两个非登录用户之间的rsyncing,linux,bash,rsync,Linux,Bash,Rsync,我有两台机器A和B,它们都有3个用户: root(我不知道密码可以用sudo su-切换) login(用于sshing进入两台机器,有密码,是sudoer) mysql(运行mysql服务器的标准非交互式用户) 我需要做的是将属于mysql的数据目录(dir)从机器A同步到机器B 显然,我不能只做: rsync -avpE /dir/ B:/dir/ 因为A和B都没有对dir 我做不到: sudo -u mysql rsync -avpE /dir/ B:/dir/ 因为现在A可以访问
A
和B
,它们都有3个用户:
(我不知道密码可以用root
切换)sudo su-
(用于login
ing进入两台机器,有密码,是sudoer)ssh
(运行mysql服务器的标准非交互式用户)mysql
mysql
的数据目录(dir
)从机器A
同步到机器B
显然,我不能只做:
rsync -avpE /dir/ B:/dir/
因为A和B都没有对dir
我做不到:
sudo -u mysql rsync -avpE /dir/ B:/dir/
因为现在A可以访问dir
,但B不能
那么,有没有可能构造一个rsync命令,这样我就可以在不使用临时空间的情况下复制数据呢?
rsync
有一个名为--rsync path
的选项,可以帮助您:
$ rsync |& grep rsync-path
--rsync-path=PROGRAM specify the rsync to run on the remote machine
其想法是要求(本地)rsync
通过ssh连接到远程机器(作为用户login
),然后当它想在远程机器上调用rsync
时,让它调用sudo-umysql rsync
,而不是普通的rsync
。比如说:
sudo -u mysql rsync -avpE --rsync-path="sudo -u mysql rsync" /dir/ login@B:/dir/
当然,要使其工作,远程计算机上的用户
登录
必须能够sudo-umysql
而无需密码。Hi redneb,这是可行的,如果登录用户必须指定密码,是否可能实现?我尝试了sudo-umysql rsync-avpE--rsync path=“echo pass | sudo-Su mysql rsync”/dir/login@B:/dir/但它不工作出于安全原因,我认为sudo
无法从其stdin
读取其密码。实际上,我错了,sudo
具有-S
标志,例如,echo'password'| sudo-S命令
。不过,我不知道这是否适用于您的情况,因为远程端的rsync
也将使用stdin
。正如您在注释中看到的,我的示例已经包括S
标志,我尝试执行此操作。它失败了,有一个错误,我可以稍后粘贴。哎呀,我的错,我没有注意到。因此,这样传递密码显然会干扰rsync
对stdin
的使用。