ssh, sudo, então faça o download?

4

Eu tenho um servidor A, ele tem três usuários. Eu preciso baixar 70 gigabytes de conteúdo de uma pasta no servidor B. O servidor tem apenas 90 GB de espaço, então compactar, então a transferência não é uma opção. Na minha experiência, rsync é extremamente lento 10 vezes mais lento que outros métodos.

Eu sempre usei

ssh user@ip "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx

Este comando é incrível porque abre um pipe e faz o download direto de tudo o que você quiser, na velocidade máxima. Não diminui a velocidade de arquivos minúsculos como o rsync. Eu usei isso para transferir coisas rapidamente e é tão rápido que o upload de 100 mbps é o gargalo.

De qualquer forma, mas o servidor A tem um usuário que eu loguei, ele também tem sudo -i e, finalmente, também há minecraft, os arquivos do usuário estão realmente abaixo. O usuário não é um usuário real, é apenas o espaço reservado para os arquivos por motivos de segurança. Não consigo fazer login nesse usuário.

Então, o que devo fazer é, ssh do servidor B no servidor A, com um comando sudo na raiz, fornecer a senha de root e, em seguida, executar o meu usual

ssh user@ip "tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx

Por favor, ajude-me todos os assistentes de computador.

    
por Web Master 19.10.2015 / 12:12

2 respostas

2

Você pode usar o sudo dentro do seu comando ssh. Para o prompt de senha sudo, você pode passar a senha em texto simples usando a opção -S :

ssh user@ip "echo mypassword | sudo -S tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx

Outro método, que não estou elaborando muito, é usar expect . Você pode ver isso também.

    
por 19.10.2015 / 13:58
7

Você recebeu a mensagem de erro sudo: no tty present porque ssh não aloca automaticamente um dispositivo tty quando você está no modo não interativo. ou seja, você especificou um comando para executar no sistema remoto.

Você pode forçar o ssh a alocar um dispositivo tty usando a opção -t .

ssh -t user@ip "sudo tar zc -C /home/minecraft/multicraft/servers/server2 ." | tar zx
    
por 19.10.2015 / 14:13