Cuando intento usar sftp para transferir un directorio que contiene archivos, aparece un mensaje de error:
skipping non-regular file directory_name
El directorio contiene un par de archivos y dos subdirectorios.
¿Qué estoy haciendo mal?
sftp, like cpy scp, requiere que cuando copie una carpeta (y su contenido, obviamente), tenga que decirle explícitamente que desea transferir la carpeta de forma recursiva con la -ropción.
Entonces, agregue -ral comando.
-ralsftpcomando cuando se conecte.sftp -r user@hostCouldn't canonicalise: No such file or directory.# sftp user@remote-host#> get -r remote-folderSolo puedo sugerir, lo usas
rsync. Es algo así como un estándar de la industria, cuando se mueven archivos a través de conexiones seguras.Es lo que he estado usando durante años por ahora.
(la
-aopción se ocupa de cosas como la recursividad de directorio)fuente
-a= recursión + mantener enlaces simbólicos, permisos, tiempos de modificación, propietario, grupo, archivos especiales y archivos de dispositivo (este último requiere privilegios de superusuario);-l= mantener enlaces simbólicos (ya incluidos en-a);-P= mostrar progreso durante la transferencia + mantener archivos parcialmente transferidos;-v= modo detallado (sin embargo, parece obligatorio cuando se usa-Ppara evitar un error extraño (¿error?)protocol version mismatch);-z= habilitar la compresión de los datos transferidos.-linterruptor debe usarse o no. Recuerdo que las versiones anteriores no se incluyeron-len-a.También puede usar el uso
scp. El formato general esscpsignifica "copia segura". Las banderas son-rrecurrir a subdirectorios-ppreservar tiempos de modificaciónCreo que el resto de los elementos se explican por sí mismos.
fuente
Esto funciona para mi:
1) conectarse a través
sftpde un host remoto2) cambie al directorio remoto que desea copiar. (Ejemplo: cd Music)
3) cambie al directorio local al que desea copiar cosas. (Ejemplo: escritorio lcd)
4) Emita este comando:
get -r *fuente
Si
rsyncno es una opción, luego recomendaríalftp:Luego use el
mirrorcomando para cargar recursivamente, así:(Tenga en cuenta que la recursividad es la predeterminada.
-REs para revertir : para que el comando espejo se cargue en lugar de descargar. Intente agregar--dry-rununa prueba para asegurarse de que está haciendo lo que espera).O para subir sin recursividad:
Tienes que
cdingresar a los directorios que deseas reflejar. ¡Funciona genial!fuente
Si puedes, usa sshfs . Es un sistema de archivos FUSE , disponible en la mayoría de los equipos modernos, y funciona con cualquier servidor SFTP. Este es un sistema de archivos remoto: le permite manipular archivos remotos (a través del protocolo SFTP) con las utilidades habituales.
fuente
Es un poco difícil pero lo que funciona para mí es:
sshpara iniciar sesión en la máquina remotasftpdesde la máquina remota a su máquina localgetcomando con la-ropción de mover el directorio y todos sus archivos.fuente
sftp> get -r data /opt/bin get: Invalid flag -rSi su pregunta es en realidad '¿cómo uso sftp para transferir un directorio', entonces
Pero si transfiere un directorio, podría sugerir dos mejores opciones, según sus necesidades.
sftprequiere iniciar sesión en el servidor remoto en un símbolo del sistema de tipo ssh, pero si todo lo que desea son los archivos, hay formas más fáciles y rápidas.Scp
Para una transferencia única, para subir prueba:
Rsync
Si planea sincronizar los directorios de manera regular, usar rsync tiene más sentido. Realiza deltas entre los dos directorios, ahorrando tiempo de transferencia y datos a través del cable.
Aquí hay una lista de algunas de las opciones rsync más comunes: ( tomado de aquí )
¡Espero que ayude!
fuente
puede llegar desde el servidor a su ruta local al
fuente