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 cp
y 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 -r
opción.
Entonces, agregue -r
al comando.
-r
alsftp
comando cuando se conecte.sftp -r user@host
Couldn't canonicalise: No such file or directory
.# sftp user@remote-host
#> get -r remote-folder
Solo 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
-a
opció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-P
para evitar un error extraño (¿error?)protocol version mismatch
);-z
= habilitar la compresión de los datos transferidos.-l
interruptor debe usarse o no. Recuerdo que las versiones anteriores no se incluyeron-l
en-a
.También puede usar el uso
scp
. El formato general esscp
significa "copia segura". Las banderas son-r
recurrir a subdirectorios-p
preservar 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
sftp
de 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
rsync
no es una opción, luego recomendaríalftp
:Luego use el
mirror
comando para cargar recursivamente, así:(Tenga en cuenta que la recursividad es la predeterminada.
-R
Es para revertir : para que el comando espejo se cargue en lugar de descargar. Intente agregar--dry-run
una prueba para asegurarse de que está haciendo lo que espera).O para subir sin recursividad:
Tienes que
cd
ingresar 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:
ssh
para iniciar sesión en la máquina remotasftp
desde la máquina remota a su máquina localget
comando con la-r
opción de mover el directorio y todos sus archivos.fuente
sftp> get -r data /opt/bin get: Invalid flag -r
Si 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.
sftp
requiere 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