Copie o arquivo do host local para o host remoto

1

Essa resposta deve existir em algum lugar, pois é tão básica, mas não consigo encontrá-la.

Eu tenho um arquivo no meu computador local que eu quero copiar para um host remoto. Eu sei como usar scp, mas se eu fizer isso do meu host local para o host remoto, recebo um erro de permissão. Eu posso fazer login no host remoto com privilégios de root, mas não sei como identificar minha máquina local (tentei os endereços IP internos e externos e terminei as duas vezes). Qualquer um dos métodos funcionaria para mim (embora idealmente eu gostaria de saber como fazer os dois!)

Isso faz parte de um exercício para aprender melhor o Linux, então, se eu não apresentar as informações necessárias, por favor, deixe-me saber o que é especificamente necessário e eu farei o meu melhor para elaborar.

(Pergunta bônus: Adoraria qualquer recomendação de bons recursos do Linux!)

    
por thumbtackthief 19.02.2014 / 19:56

2 respostas

3

Isto é exatamente para o que rsync foi criado! Contanto que você tenha acesso SSH à máquina remota e a máquina remota tenha rsync instalado, você poderá:

rsync -avz /path/to/local/file username@host:/destination/path

Isso se conectará por SSH a host como username , iniciará um daemon rsync privado e copiará o arquivo local para o local remoto através do túnel SSH criptografado. Você também pode especificar um local remoto primeiro e um segundo local local para copiar arquivos remotos para o sistema local. Se você especificar uma pasta para copiar, ela copiará a pasta e todo o seu conteúdo.

Repartição das bandeiras:

  • -a "Arquivo" - copie recursivamente e preserve os atributos / permissões sempre que possível.
  • -v "Verbose" - Imprima cada nome de arquivo depois de copiado
  • -z "Compactar" - gzip os dados conforme eles passam pela rede. Transferências mais rápidas e menor largura de banda ao custo do processamento da CPU.

Se você estiver transferindo arquivos grandes, a opção --progress também poderá ser útil.

    
por 19.02.2014 / 20:15
0
ssh username@remotehost tee /home/user/example.file < ./example.local.file

O que isso faz:

  • lê o conteúdo do arquivo local ./example.local.file
  • SSHs em remotehost como usuário username
  • lança tee no host remoto
  • e instrui para colocar o que recebe como entrada em /home/user/example.file

Vantagens:

  • simples

Desvantagens:

  • sobrescreve todo o arquivo, independentemente do estado do arquivo remoto
  • , o que significa que todo o arquivo será sempre transferido pela rede
  • tee irá ecoar tudo o que recebe; isso pode ser indesejável com arquivos binários
por 19.02.2014 / 20:03