2012-04-10 7 views

Respuesta

25

Here puede encontrar una explicación detallada de cómo copiar un directorio usando scp. En su caso, sería algo así como:

$ scp -r foo [email protected]:/some/remote/directory/bar 

Esto copia el directorio "foo" desde el host local en el directorio "barra" de un host remoto. Aquí -r -recursively copia todos los directorios.

También puede usar rcp con sintaxis similar. La única diferencia entre ellos es que scp usa shell seguro y rcp usa shell remoto.

BTW El error "No se pudo canonicalizar" que mencionó aparece cuando el servidor sftp no puede acceder al archivo/directorio mencionado en el comando.

ACTUALIZACIÓN: Para los usuarios que deseen utilizar específicamente put, consulte la respuesta de Ben Thielker aquí.

+0

Esto no funcionará cuando el destino solo sea compatible con SFTP y no con SSH. – Teekin

-6

Use scp en su lugar. También usa SSH y puede manejar fácilmente la recursión.

+3

'scp' es de hecho superior, pero no todos los servidores 'sftp' admiten conexiones' scp', por lo que a veces se requiere 'sftp'. –

+0

Por el momento estoy en una base de código C++ con soporte para sftp pero no soporte de scp, por lo que tampoco me funciona. scp no es siempre la respuesta. – PThomasCS

151

Para las personas que desean realmente una respuesta directa a esta pregunta (en lugar de ser indicado que use algo distinto de SFTP) ...

put -r local/path/to/directoryName 

El directorio subido ya debe existir en el directorio de trabajo en el servidor, por lo que es posible que tengas que crearlo primero.

mkdir directoryName 
+32

Esta debería ser la respuesta aceptada. –

+3

cuando intento poner -r algún archivo me sale "indicador no válido -r" –

+3

Gracias, que alguien haga de esto la respuesta aceptada. – Nightwolf

0
sftp> mkdir source 
sftp> put -r source 
Uploading source/ to /home/myself/source 
Entering source/ 
source/file1 
source/file2 

enter image description here

Cuestiones relacionadas