我有一个远程服务器,并想知道什么是将文件传输到远程服务器的最佳方式
所以我期待rsync,但需要指定另一个命令做的sudo部分。 否则,我得到一个许可被拒绝。
$> rsync somefile -e "ssh" user@server:/var/www/whichever.site
现在“用户”不拥有/ var / www的权限,但我想用该用户进入服务器,然后执行sudo。
显然,如果这个场景还有另一个“最佳实践”,我想知道。
只要不要忘记,只要远程主机的/root/.ssh/authorized_keys在那里,机器接受来自PC的root命令。
尝试这个
rsync -R -avz -e ssh --rsync-path="echo mypassword | sudo -S mkdir -p /remote/awesome/folder && sudo rsync" /home/user/my/awesome/folder user@xxxx:/remote/lovely/folder --delete
这将保持两个文件夹同步。 记住源始终是第一位的。
另一种方法是你可以像这样在远程服务器上的/etc/sudoers添加一个NOPASSWD 。
username ALL= NOPASSWD:/usr/bin/rsync
NOPASSWD:/usr/bin/rsync告诉sudo,当你的用户运行/usr/bin/rsync或者rsync ,不需要密码。