Problema en la copia segura (scp) de nombres de archivo con espacios


9

Estoy tratando de copiar archivos usando copia segura (scp). Estoy tratando de ejecutar el siguiente comando, pero recibo un error debido al espacio en la ruta absoluta de la ubicación del directorio.

scp -r -P 8484 root@172.31.72.103:/media/New Volume/lj /home/pratheep

Estoy teniendo el siguiente error:

scp: /media/New: No such file or directory  
scp: Volume/lj: No such file or directory

Traté de usar el mismo comando poniendo barra diagonal inversa adicional como

scp -r -P 8484 root@172.31.72.103:/media/New\ Volume/lj /home/pratheep

pero sigo recibiendo el mismo error.

¿Alguien puede decirme cómo corregirlo?

Respuestas:


18

Debe citar su nombre de archivo dos veces, uno para el shell local y otro para el remoto. En el caso más simple, puede hacer uno de los siguientes

scp -r -P 8484 root@172.31.72.103:"'/media/New Volume/lj'" /home/pratheep
scp -r -P 8484 root@172.31.72.103:'"/media/New Volume/lj"' /home/pratheep

o usando la ayuda de completar pestañas

scp -r -P 8484 root@172.31.72.103:/media/New\\\ Volume/lj /home/pratheep

3
Es útil tener en cuenta que se scpusa sshcomo transporte, lo que explica por qué hay dos pasos de interpretación de shell.
msw

1

scpy rsyncpasar nombres de archivos remotos al shell remoto. Esto le permite pasar patrones, como en

scp remotehost:'*.txt' .

pero tiene la desagradable consecuencia de que necesita un presupuesto adicional al proporcionar un nombre de archivo remoto.

Puede pasar la -sopción para rsyncque proteja los nombres de los archivos de la expansión del shell remoto. Pero eso activa la expansión de comodines incorporada de rsync, por lo que aún debe citar \[?*.

Una solución alternativa es transferir un archivo:

ssh -P 8484 root@172.31.72.103 'cd "/media/New Volume" && tar cf - lj' |
tar xf - -C /home/pratheep

Otro método es montar el sistema de archivos remoto y luego usar herramientas comunes para realizar la copia.

mkdir mnt
sshfs -p 8484 root@172.31.72.103:/ mnt
cp -Rp 'mnt/media/New Volume/lj' /home/pratheep
fusermount -u mnt
rmdir mnt
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.