Put / get recursivo se agregó a OpenSSH en 5.4, que se lanzó en 2010. Puede considerar actualizar sus servidores, ya que también agrega muchas correcciones de errores y mejores características de seguridad.
Esto funciona, pero sería bueno poder hacer esto desde SFTP (para que pueda ver lo que copio antes de copiarlo). es posible?
Mateo
@Matthew: No lo creo. Me he estado haciendo la misma pregunta durante algún tiempo y la mejor respuesta que tengo por el momento es scp -r. O puede usar un cliente SFTP avanzado como Filezilla.
Cristian Ciupitu
1
scp -r seguirá enlaces simbólicos ...
jsleuth
55
Algunos sistemas pueden permitir sftp, pero no el scpacceso.
Gracias, esto funcionó para mí, después de que fallaron los otros métodos (en particular, ninguna opción "-r" en sftp). La primera parte del comando en mi caso necesitaba ser citada, debido a los caracteres en dólares en la contraseñalftp 'sftp://user:[email protected]:22' -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'
Jason
15
No use el programa sftp directamente si puede encontrar algo mejor. Para Linux, muchos administradores de archivos (al menos Nautilus y Dolphin, los de GNOME y KDE) admiten sftp de forma nativa, y siempre hay sshfs. Para Windows, hay WinSCP, y probablemente otros . El objetivo de todo esto es permitirle acceder a archivos a través de sftp como si estuvieran en un sistema de archivos normal, para que no tenga que preocuparse de que esté accediendo a ellos a través de sftp.
Wow, nautilus funciona muy bien con SFTP. Agregué un marcador en Nautilus, y ahora todo es ridículamente fácil. ¡Gracias!
Mateo
He tenido problemas de rendimiento con Nautilus SFTP. Sí, es realmente conveniente, pero no pude saturar la red de 1 Gbit / s a través de Nautilus, mientras que con la sftp/sshinterfaz de línea de comando simple lo estaba (transferencias de archivos de aproximadamente 100 MB / s). Entonces el problema fue Nautilus en GNU / Linux Mint.
stamster
13
Intenta en mgetlugar de get.
Aclaración: mgetse trabajará si está dentro del directorio que desea copiar; si haces algo como esto:
sftp> cd dir_to_get
sftp> mget *
obtendrá todos los archivos en ese directorio. Sin embargo, será no recursiva obtener el contenido de todos los subdirectorios.
OMI, esta es la mejor respuesta a esta pregunta. :)
ramrunner
3
Este es un duplicado de una respuesta del 29 de noviembre de 2010 (hace casi un año y medio).
Cristian Ciupitu
5
Como con cp:
scp -rp user@host:/path/to/dir dir
Lo anterior preservará los tiempos y modos de los archivos y subdirectorios originales. Esto es especialmente útil para la recuperación de copias de seguridad.
Respuestas:
Use la
-rbandera (recursiva):fuente
get: Invalid flag -r-rbandera no existía. ¿Su sistema está actualizado?Utilizar:
fuente
scp -r. O puede usar un cliente SFTP avanzado como Filezilla.sftp, pero no elscpacceso.Uso
lftp:Luego, dentro de lftp,
cden el directorio que desea copiar, y use elmirrorcomando para descargar recursivamente el directorio seleccionado, así:Este comando acepta opciones y argumentos:
Por ejemplo, la opción
-R(o--reverse) hará que cargue el árbol del directorio local en el directorio remoto:Vea la
lftp(1)página del manual en el sitio del proyecto o en Debian.org para otros comandos y opciones.fuente
bueno, esta pequeña guía debería ayudar, duplicar un servidor remoto a la carpeta local con lftp
lftp sftp://user:[email protected]:22 -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'sftp://= usa el protocolo SFTPmirror= modo espejoverbose= muestra los archivos que se están descargandouse-pget-n= número de segmentos, realmente útil para acelerar archivos grandesparallel= descarga archivos multiplicadores al mismo tiemposi desea descargar archivos en paralelo, cambie
use-pget-n=8con--parallel=8Espero que esto ayude a cualquiera que necesite duplicar una carpeta remota en una carpeta local
fuente
lftp 'sftp://user:[email protected]:22' -e 'mirror --verbose --use-pget-n=8 -c /remote/path /local/path'No use el programa sftp directamente si puede encontrar algo mejor. Para Linux, muchos administradores de archivos (al menos Nautilus y Dolphin, los de GNOME y KDE) admiten sftp de forma nativa, y siempre hay sshfs. Para Windows, hay WinSCP, y probablemente otros . El objetivo de todo esto es permitirle acceder a archivos a través de sftp como si estuvieran en un sistema de archivos normal, para que no tenga que preocuparse de que esté accediendo a ellos a través de sftp.
fuente
sftp/sshinterfaz de línea de comando simple lo estaba (transferencias de archivos de aproximadamente 100 MB / s). Entonces el problema fue Nautilus en GNU / Linux Mint.Intenta en
mgetlugar deget.Aclaración:
mgetse trabajará si está dentro del directorio que desea copiar; si haces algo como esto:obtendrá todos los archivos en ese directorio. Sin embargo, será no recursiva obtener el contenido de todos los subdirectorios.
fuente
se pone
[directory]y todo debajo de él, dondersignifica recursivo. Encontré esto simplemente escribiendohelpdesdesftp.fuente
Como con
cp:Lo anterior preservará los tiempos y modos de los archivos y subdirectorios originales. Esto es especialmente útil para la recuperación de copias de seguridad.
fuente
Tengo la carpeta Java dist en el servidor remoto, donde tengo el siguiente árbol:
El objetivo es: ¿Quiero usar SFTP? Y ponerlos en / tmp / <>
Paso 1. sftp remoteuser @ ip
Paso 2. cd / var / tmp
Paso 2. lmkdir / tmp / dist; lmkdir / tmp / dist / lib
Paso 3. lcd / tmp / dist
Paso 4. mget *
Paso 5. lcd / tmp / dist / lib
Paso 6. mget *
Paso 7. finalmente tengo mi objetivo
fuente