Transferindo arquivos por SSH [fechado]


461

Estou usando SSH em um servidor remoto na linha de comando e tentando copiar um diretório na minha máquina local com o scpcomando No entanto, o servidor remoto retorna esta mensagem de "uso":

[Stewart:console/ebooks/discostat] jmm% scp -p ./styles/
usage: scp [-1246BCEpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 [...] [[user@]host2:]file2
[Stewart:console/ebooks/discostat] jmm%

Eu gostaria de poder transferir arquivos nas duas direções. Pelo que li, pensei que o comando acima funcionaria para download e scp -p [localpath] [remotepath]upload?

Respostas:


735

Você precisa de scpalgo em algum lugar. Você tem scp ./styles/, então você está dizendo cópia segura ./styles/, mas não para onde copiar.

Geralmente, se você deseja fazer o download, ele irá:

# download: remote -> local
scp user@remote_host:remote_file local_file 

onde local_filepode haver um diretório para colocar o arquivo no qual você está copiando. Para fazer o upload, é o oposto:

# upload: local -> remote
scp local_file user@remote_host:remote_file

Se você deseja copiar um diretório inteiro, precisará -r. Pense em scpcomo gostaria cp, exceto que você pode especificar um arquivo com user@remote_host:file, bem como apenas arquivos locais.

Editar: conforme observado em um comentário, se os nomes de usuário nos hosts locais e remotos forem os mesmos, o usuário poderá ser omitido ao especificar um arquivo remoto.


2
Observe que, se o usuário for o mesmo no host remoto e no host local, o nome de usuário poderá ser omitido: scp hello.c myserver.net:~/projects/
strager

Sim, é verdade, vou adicionar uma observação sobre isso. Eu incluí o usuário porque os exemplos que eu dei sempre funcionarão. :)
lemnisca 5/08

Estou tendo dificuldades com isso ... isso está correto? scp C: \ filename.txt server1 @ server2: home
Vincent

Por favor, adicione formatação em negrito em "donload" e "upload".
kursus

2
"naturalmente" (digo naturalmente porque acabei de desperdiçar 15 minutos com isso), você não deve estar conectado ao host remoto enquanto tenta "fazer o download" para o local, porque se estiver executando o código a partir de uma instância remota, "local" ser interpretado como o "remoto", se você entende o que quero dizer. Portanto , não execute o ssh primeiro.
PatrickT

164

Se estiver copiando para / da máquina da área de trabalho, use o WinSCP ou, no Linux, o Nautilus suporta o SCP por meio da opção Conectar ao Servidor.

O scp só pode copiar arquivos para uma máquina executando o sshd; portanto, você precisa executar o software cliente na máquina remota daquele em que está executando o scp.

Se estiver copiando na linha de comando, use:

# copy from local machine to remote machine
scp localfile user@host:/path/to/whereyouwant/thefile

ou

# copy from remote machine to local machine
scp user@host:/path/to/remotefile localfile

4
Você é o cara. Implantei um blog em menos de 10 segundos sem nenhuma instalação adicional no lado do servidor!
PM

2
Isso funcionou perfeitamente. Eu usei o msysgit no cmd, pois possui scp e ssh.
Ibn Saeed

3
Isso funcionou perfeitamente. Eu usei scp * usuário @ host: path / / a /, onde
Bastin Robin

3
Essa deve ser a melhor resposta.
gsamaras

3
Obrigado pela sugestão do WinSCP. Caminho mais fácil do que tentar escrever todos os comandos manualmente ...
Brian Leishman

23

Você precisa especificar a origem e o destino e, se desejar copiar os diretórios, deverá procurar a opção -r.

Então, para copiar recursivamente / home / user / o que for do servidor remoto para o diretório atual:

scp -pr user@remoteserver:whatever .

19

Não, você ainda precisa scp [from] [to]seguir o caminho que está copiando

A diferença é que você precisa scp -p server:serverpath localpath


8
qual é o propósito de -p?
Qinjie

1
De man scp: preserva os tempos de modificação, os tempos de acesso e os modos do arquivo original.
pjmil

4
Para ser claro, -papenas é incluído aqui porque o OP incluiu a bandeira na pergunta original. Não é de qualquer forma relevante para a resposta
Gareth
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.