2012-02-08 13:15:37 +0000 2012-02-08 13:15:37 +0000
29
29

sftp: subir todos los archivos, directorios y subdirectorios contenidos en una carpeta

En la máquina A tengo la carpeta

/home/a/

En la máquina B tengo la carpeta

/home/b/

Deseo transferir todos los archivos, directorios y subdirectorios de /home/a en /home/b con sftp En la máquina A he probado los comandos

sftp fibon82@machineB.com
put /home/a/* /home/b/

pero no funciona, me sale el mensaje de error “saltando archivo no regular /home/a/a1”… [a1 es un subdirectorio de a] ¿Cómo podría modificar la instrucción put?

¡Gracias! :)

EDIT:

He resuelto usando scp:

scp -r /home/a/ fibon82@machineB.com:/home/b/

Respuestas (6)

21
21
21
2014-10-02 20:33:25 +0000

En sftp este comando carga recursivamente el contenido del directorio actual al directorio actual remoto:

put -r .

Ver man sftp .

21
21
21
2012-02-08 22:41:19 +0000

Aunque no es estrictamente equivalente a sftp, rsync es una alternativa muy potente para scp y sftp, sobre todo a la hora de actualizar las copias de la máquina A a la máquina B, ya que no copia los ficheros que no han sido alterados; también es capaz de eliminar los ficheros de la máquina B que han sido borrados de la máquina A (sólo cuando se le indica, por supuesto).

En tu caso, la sintaxis sería

rsync -zrp /home/a/ user@remote.host.com:/home/b/

La opción -r es para copiar archivos recursivamente, -z permite la compresión durante la transferencia, y -p preserva los permisos de los archivos (creación de archivos, edición, etc.) al copiar, que es algo que scp no hace AFAIK. Hay muchas más opciones posibles; como siempre, lee las páginas de man.

10
10
10
2012-02-08 16:04:32 +0000

scp (copia segura) es el método de facto de Linux para transferir archivos a través de un túnel seguro. En tu caso querrías usar el interruptor recursivo, por ejemplo

scp -r /home/a/ user@remote.host.com:/home/b/
4
4
4
2014-01-04 14:02:14 +0000

Pruebe a utilizar

put -r /home/a/ /home/b/

para más información consulte: este

0
0
0
2017-10-05 13:53:58 +0000

En realidad, put -r debería funcionar. Pero la carpeta de destino debe estar presente en su host remoto:

sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder
 Couldn't canonicalize: No such file or directory
 ....
sftp> mkdir sourcefolder
sftp> put -r sourcefolder
 Uploading sourcefolder/ to /user/folder/sourcefolder
 Entering sourcefolder/
 sourcefolder/file1
 sourcefolder/file2
-1
-1
-1
2014-02-14 10:10:51 +0000

En mi caso rsync no era posible así que usé

mput -rp /home/a/ /home/b/