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
    (用于
    ssh
    ing进入两台机器,有密码,是sudoer)
  • 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
的使用。