2008-12-05 13 views
355

Estoy SSHing en un servidor remoto en la línea de comando y tratando de copiar un directorio en mi máquina local con el comando scp. Sin embargo, el servidor remoto devuelve este mensaje de "uso":Transfiriendo archivos a través de SSH

[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] 
      [[[email protected]]host1:]file1 [...] [[[email protected]]host2:]file2 
[Stewart:console/ebooks/discostat] jmm% 

Me gustaría poder transferir archivos en ambas direcciones. Por lo que leí, pensé que el comando anterior funcionaría para la descarga, y scp -p [localpath] [remotepath] para cargarlo.

Respuesta

12

No, todavía tienen que scp [from] [to] se mire como se está copiando

La diferencia es, tiene que scp -p server:serverpath localpath

+5

¿cuál es el propósito de -p? – Qinjie

562

Es necesario scp algo en alguna parte. Tiene scp ./styles/, por lo que está diciendo que es una copia segura ./styles/, pero no dónde copiarlo.

Generalmente, si usted quiere descargar, irá:.

# download: remote -> local 
scp [email protected]_host:remote_file local_file 

donde local_file podría ser en realidad un directorio para poner el archivo que está copiando en cargar, es todo lo contrario:

# upload: local -> remote 
scp local_file [email protected]_host:remote_file 

Si desea copiar un directorio completo, necesitará -r. Piense en scp como cp, excepto que puede especificar un archivo con [email protected]_host:file, así como solo archivos locales.

Editar: Como se indica en un comentario, si los nombres de usuario en los hosts locales y remotos son los mismos, entonces el usuario puede omitirse al especificar un archivo remoto.

+2

Tenga en cuenta que si el usuario es el mismo en el host remoto y el host local, se puede omitir el nombre de usuario: scp hello.c myserver.net:~/projects/ – strager

+0

Sí, cierto, agregaré una nota al respecto. Incluí al usuario porque los ejemplos que di siempre funcionarán. :) – lemnisca

+1

+1: Formateo adicional para hacerlo un poco más claro. –

122

Si copia a/desde su máquina de escritorio, use WinSCP, o si está en Linux, Nautilus admite SCP a través de la opción Conectar al servidor.

scp solo puede copiar archivos a una máquina que ejecuta sshd, por lo tanto, necesita ejecutar el software del cliente en la máquina remota desde la que ejecuta scp.

Si copia en la línea de comandos, utilice:

# copy from local machine to remote machine 
scp localfile [email protected]:/path/to/whereyouwant/thefile 

o

# copy from remote machine to local machine 
scp [email protected]:/path/to/remotefile localfile 
+2

Eres el hombre. Implementé un blog en menos de 10 segundos sin ninguna instalación adicional en el lado del servidor. –

+0

Esto funcionó perfectamente. Usé msysgit en cmd ya que tiene tanto scp como ssh. –

+1

Esto funcionó perfectamente. Utilicé scp * user @ host:/ruta/a/donde –

21

Es necesario especificar la fuente y el destino, y si desea copiar directorios que debe buscar en el - r opción.

Así copiar recursivamente/home/usuario/lo que sea desde un servidor remoto a su directorio actual:

scp -pr [email protected]:whatever . 
Cuestiones relacionadas