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 [email protected]:/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 [email protected]:/media/New\ Volume/lj /home/pratheep

pero sigo recibiendo el mismo error.

¿Alguien puede decirme cómo corregirlo?

Pradeepchhetri
fuente

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 [email protected]:"'/media/New Volume/lj'" /home/pratheep
scp -r -P 8484 [email protected]:'"/media/New Volume/lj"' /home/pratheep

o usando la ayuda de completar pestañas

scp -r -P 8484 [email protected]:/media/New\\\ Volume/lj /home/pratheep
enzotib
fuente
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 [email protected] '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 [email protected]:/ mnt
cp -Rp 'mnt/media/New Volume/lj' /home/pratheep
fusermount -u mnt
rmdir mnt
Gilles 'SO- deja de ser malvado'
fuente