Problème de copie sécurisée (scp) des noms de fichiers avec des espaces


9

J'essaie de copier des fichiers en utilisant une copie sécurisée (scp). J'essaie d'exécuter la commande suivante mais j'obtiens une erreur en raison de l'espace dans le chemin absolu de l'emplacement du répertoire.

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

Je reçois l'erreur suivante:

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

J'ai essayé d'utiliser la même commande en mettant une barre oblique supplémentaire comme

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

mais je reçois toujours la même erreur.

Quelqu'un peut-il me dire comment le corriger?

Réponses:


18

Vous devez citer deux fois le nom de votre fichier, un pour le shell local et un pour le distant. Dans le cas le plus simple, vous pouvez effectuer l'une des opérations suivantes

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

ou en utilisant l'aide de la complétion des onglets

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

3
Il est utile de noter que scputilise sshcomme transport ce qui explique pourquoi il y a deux passes d'interprétation du shell.
msw

1

scpet rsyncpassez des noms de fichiers distants au shell distant. Cela vous permet de passer des modèles, comme dans

scp remotehost:'*.txt' .

mais cela a la conséquence désagréable que vous ayez besoin de devis supplémentaires lorsque vous fournissez un nom de fichier distant.

Vous pouvez passer l' -soption pour rsynclui faire protéger les noms de fichiers contre l'expansion par le shell distant. Mais cela active l'extension générique intégrée de rsync, vous devez donc toujours citer \[?*.

Une solution de contournement consiste à transférer une archive:

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

Une autre méthode consiste à monter le système de fichiers distant, puis à utiliser des outils ordinaires pour effectuer la copie.

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.