Como puxar um arquivo de um servidor usando scp?


31

Estou na máquina A e quero extrair um arquivo da máquina B.

A$ scp <myuserid>@hostB:<path of file in B> .

isso diz que:

scp: <path of file in B>: No such file or directory

Mas na máquina B, esse arquivo existe neste caminho.

O que está acontecendo de errado?


Esse é o formato exato do comando que você executou? Ou havia um nome de arquivo após o ':'?
Dtyler 12/10

Respostas:


43

Você não especificou nenhum arquivo: você deve adicionar o arquivo (com o caminho) após os dois pontos:

A$ scp <myuserid>@hostB:/absolutepath/file .

ou

A$ scp <myuserid>@hostB:relativepath/file .

para um caminho relativo ao seu diretório pessoal.

Se você não especificar um usuário diferente (ou seja, o usuário A e B são os mesmos), não precisará do @

A$ scp hostB:/path/file .

2
Corrigi a formatação da pergunta, mas talvez sua resposta ainda seja válida. O problema pode vir de uma confusão entre caminhos absolutos e relativos (para casa).
Stéphane Gimenez

@ StéphaneGimenez agora que vejo a resposta editada que eu entendo. Parecia uma pergunta estranha :-)
Matteo

4
$ scp username@remoteip:remote_location_file /location/where/you/save

Isso funciona apenas quando você copia o arquivo. se você deseja copiar um diretório, use

$ scp -r username@remoteip:remote_location_directory /location/where/you/save

Opção que você pode usar sob sua demanda

-P port
Especifica a porta à qual se conectar no host remoto. Observe que esta opção é gravada com "P" maiúsculo, porque -p já está reservado para preservar os horários e modos do arquivo no rcp.

-p
Preserva os tempos de modificação, os tempos de acesso e os modos do arquivo original.

-r
Copia recursivamente diretórios inteiros.

-v

Modo verboso. Faz com que scp e ssh imprimam mensagens de depuração sobre seu progresso. Isso é útil na depuração de problemas de conexão, autenticação e configuração.


11
O OP pediu para copiar um arquivo, não um diretório.
Contramodo #

2

use o caminho scp adequado

scp ssh://user@hostname/tmp/foo.txt .

1

Você pode especificar um caminho de arquivo que seja relativo ao diretório inicial ou um caminho de arquivo absoluto. Por exemplo, se foo.txtestiver em um diretório chamado docssob o diretório inicial e bar.txtestiver /var/tmp, você poderá

scp username@host.example.com:docs/foo.txt .
scp username@host.example.com:/var/tmp/bar.txt .

Observe que, se o nome do arquivo contiver caracteres especiais para o shell remoto (geralmente espaço em branco ou !"#$&'*;<>?[\]^`{|}~), será necessário escapá-los para o shell remoto, além de escapar para o shell local. Por exemplo, se o arquivo for chamado foo bar.txte estiver no seu diretório pessoal:

scp username@host.example.com:'foo\ bar.txt' .

Se você tiver dificuldades com arquivos que contenham caracteres de pontuação, tente usar em sftpvez de scptransferi-los. Ou use um método ainda mais conveniente, se você puder usar o FUSE : monte o sistema de arquivos da máquina remota usando sshfs e use comandos comuns de manipulação de arquivos.

mkdir host.example.com
sshfs username@host.example.com:/ host.example.com
cp host.example.com/path/to/file .

1

É possível fazer o SCP dos dois lados com facilidade, se houver o usuário e a senha da DMZ. Você está na sua máquina local: da DMZ à sua máquina Linux local (pull). Significa copiar abc.text dentro de folder2 para o seu PWD conectado atual.

scp user@111111:folder1/folder2/abc.txt .

Ele solicitará a senha

Isso é tudo

Agora você deseja enviar uma pasta para subpastas e arquivos da sua máquina local para a DMZ:

usr @ localmachine: ~ / abc / defs> pasta scp -r / usr @ 111111: vkrishna / docker /

novamente a senha será solicitada

: é a pasta raiz da máquina remota e vkrishna é uma pasta lá e novamente na subpasta docker. A pasta defs localmente tem uma pasta chamada "pasta" que queremos transferir completamente.

Curtir / abc / defs / folder

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.