2009-10-20 22 views
14

La línea de comandos sftp en mi Ubuntu no tiene puesta recursiva implementada. Encontré algún debate desde 2004 sobre la implementación de dicha función con el interruptor de opción -R. Entonces veo una especie de recursión hecha a sí misma como única opción.Cómo implementar la inserción recursiva en sftp

Ie.

  • iterar a través del listado del directorio
  • cd en directorios
  • mkdir ellos si no existentes
  • poner archivos

estoy pensando en hacer esto con bash, pero bastaría cualquier otro idioma .

Rsync o scp no es una opción porque no tengo acceso de shell al servidor. Solo sftp.

+1

vistazo a mi respuesta para la solución usando lftp –

+0

por qué es necesario para el acceso shell SCP? – user102008

Respuesta

16

Mire lftp. Es un potente cliente de transferencia de archivos que admite ftp, ftps, http, https, hftp, fish (transferencia de archivos en ssh shell sesión) y sftp. Tiene una interfaz interactiva similar a ftp, pero también permite especificar todos los comandos en la línea de comando. Mire mput (no recursivo pero maneja patrones glob) y mirror (rsync del hombre pobre) comandos.

lo uso con un servidor que sólo se ocupa de archivos SFTP como esto:

lftp -c "open -u $MYUSER,$MYPASSWORD sftp://$TARGET ; mirror -R $SOME_DIRECTORY" 
+0

Gracias, lftp parece hacer el trabajo. Afortunadamente, no tengo las mismas limitaciones que tuve en el '09 :) – aarreoskari

0

En Java, puede usar edtFTPj/PRO, nuestro producto comercial, para transferir de forma recursiva a través de SFTP. Alternativamente, es posible que desee considerar SCP, que generalmente admite la recursión y se ejecuta a través de SSH.

0

¿Qué tal sshfs?

Combinado, por supuesto, con cp -r.

O, en su defecto, rsync -r por sí mismo.

+0

Cita de la pregunta: "Rsync o scp no es una opción porque no tengo acceso de shell al servidor. Solo sftp". Sshfs requiere acceso ssh y solo tengo sftp. – aarreoskari

+0

Huh. Nunca he oído hablar de tener acceso sftp sin acceso ssh, así que supongo que mi cerebro ignoró esa parte. Aún puedes probar sshfs. Realmente no sé si funciona por ssh o sftp. Si está usando GNOME o KDE, puede simplemente escribir las rutas de sftp en sus respectivos navegadores de archivos. –

0

Después de mucha búsqueda en Google y buenas respuestas, utilicé la sincronización de transmisión para el trabajo. No es una solución muy buena, pero cumple su función.

2

La interfaz gráfica de usuario cliente de FTP FileZilla también soporta SFTP y también soporta la carga y descarga, mientras que los directorios.

1

En la línea de comandos puede hacerlo utilizando el paquete masilla. Viene con un reemplazo sftp llamado psftp.

Es compatible con mput -r que copia un directorio local en el control remoto recursivamente.

2

Si bien creo que lftp es la mejor opción si está disponible, me quedé atrapado en una antigua instalación de Cent OS y tuve que hacer una instalación recursiva solo a través de SFTP.Esto es lo que hice:

find dir -type d -exec echo 'mkdir {}' \; | sftp [email protected] 
find dir -type f -exec echo 'put {} {}' \; | sftp [email protected] 

Básicamente, asegúrese de que todos los directorios existan y luego envíe los archivos.

1

mis Ubuntu 12.04 viene con put -r en SFTP