Estou tentando transferir um diretório para outro computador
$ 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
Caso o diretório de origem contenha alguns arquivos que exijam permissão de root local, adiciono sudo
. Está correto?
Mas por que ele continua me pedindo a senha do root do outro computador? Forneci a senha do root do destino, mas continua pedindo.
$ sudo rsync -a --delete --stats -h wget 'olive:/tmp'
root@olive's password:
Permission denied, please try again.
root@olive's password:
Como devo fazer se quiser copiar arquivos de origem que exigem permissão de root local?
Tentei a duplicata sugerida, mas não funcionou
$ 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:
Obrigado.
Do seu último exemplo, parece que seu nome de usuário não root é
t
.Quando você usa ou
ssh
e não especifica um nome de usuário remoto, as ferramentas assumem que o nome de usuário remoto é o mesmo que o local. Então o comando em seu primeiro exemplo:scp
rsync
poderia ser escrito mais explicitamente como:
Quando você prefixa o comando com
sudo
, ele altera o nome de usuário e o restante da linha de comando é executado como (pararoot
, a menos quesudo -u <username>
seja usado).Então, seu segundo exemplo:
agora é equivalente a:
porque o
rsync
comando está sendo executado como root e como o nome de usuário remoto não está definido, ele pressupõe que você deseja executar a operação rsync usando a conta root no lado remoto também.Correção: Ao usar
rsync
comsudo
, seja explícito sobre o nome de usuário remoto que você deseja usar:ou se isso não funcionar (ou seja, você
sudo
está configurado com aalways_set_home
opção habilitada para alterar a$HOME
variável de ambiente para comandos executados com ela para corresponder ao usuário com o qual o comando será executado), tente esta forma do seu terceiro exemplo:Nesse formato, o
rsync
comando é executado localmente comoroot
, mas faz logonolive
como usuáriot
- que parece ter as chaves SSH configuradas de acordo com seu primeiro exemplo.Não, o nome de usuário não precisa ser o mesmo em ambas as extremidades de uma operação
rsync
(ouscp
!) - omitir o nome de usuário remoto é apenas um atalho para as situações comuns em que o nome de usuário é o mesmo.Depende de qual conta você está executando o comando rsync. Se você executar como root, ele espera que você tenha privilégios de root no sistema de destino