我正在尝试将目录传输到另一台计算机
$ rsync -a --delete --stats -h wget 'olive:/tmp'
Number of files: 5 (reg: 4, dir: 1)
Number of created files: 5 (reg: 4, dir: 1)
Number of deleted files: 0
Number of regular files transferred: 4
Total file size: 12.94K bytes
Total transferred file size: 12.94K bytes
Literal data: 12.94K bytes
Matched data: 0 bytes
File list size: 0
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 13.31K
Total bytes received: 103
sent 13.31K bytes received 103 bytes 5.36K bytes/sec
total size is 12.94K speedup is 0.96
如果源目录包含一些需要本地 root 权限的文件,我添加sudo
. 这是对的吗?
但是为什么它一直要求我输入另一台计算机的 root 密码?我提供了目的地根的密码,但它一直在要求它。
$ sudo rsync -a --delete --stats -h wget 'olive:/tmp'
root@olive's password:
Permission denied, please try again.
root@olive's password:
如果我想复制需要本地root权限的源文件怎么办?
我尝试了建议的副本,但没有用
$ sudo rsync -e 'ssh -i /home/t/.ssh/id_rsa' -a --delete --stats -h wget 'olive:/tmp'
root@olive's password:
Permission denied, please try again.
root@olive's password:
谢谢。
从您的上一个示例中,您的非 root 用户名似乎是
t
.当您使用
ssh
,scp
或rsync
不指定远程用户名时,工具将假定远程用户名与本地用户名相同。所以你的第一个例子中的命令:可以更明确地写成:
当您为命令添加前缀时
sudo
,它会更改用户名,命令行的其余部分将作为(到root
,除非sudo -u <username>
使用)执行。所以,你的第二个例子:
现在相当于:
因为该
rsync
命令以 root 身份运行,并且由于未定义远程用户名,所以它假设您也想在远程端使用 root 帐户执行 rsync 操作。修复:使用
rsync
with 时sudo
,请明确说明您要使用的远程用户名:或者如果这不起作用(即您
sudo
的配置always_set_home
启用了该选项,因此它会更改$HOME
使用它执行的命令的环境变量以匹配将要运行该命令的用户),然后尝试这种形式的第三个示例:在这种形式中,该
rsync
命令在本地以 身份执行,但以用户身份root
登录- 这似乎根据您的第一个示例设置了 SSH 密钥。olive
t
不, (或!)操作的两端的用户名不必相同-省略远程用户名只是用户名相同时常见情况的简写。
rsync
scp
这取决于您以什么帐户运行 rsync 命令。如果您以 root 身份运行,那么它希望您在目标系统上具有 root 权限