web-dev-qa-db-fra.com

Comment scp un nom de fichier avec des espaces?

J'ai un peu de difficulté à utiliser scp pour transférer des fichiers à partir d'un ordinateur distant. Le problème concerne apparemment le nom du répertoire dans lequel les fichiers sont contenus. Ils se trouvent sur un lecteur de CD nommé photos 4 (avec un espace entre photos et 4). Lorsque j'ai tenté le transfert, j'ai utilisé la commande suivante:

scp [remote username]@192.168.1.X:/media/[remote username]/photos\ 4/file.jpg /home/[username]/Pictures

Cependant, je reçois en retour un message d'erreur disant No directory: /media/[remote username]/photos. Je pensais que la barre oblique inverse échapperait à l'espace pour que le répertoire soit lu comme suit: photos 4.

Quelqu'un peut-il me renseigner sur ce que je fais mal ici?

(En passant, j'ai copié file.jpg sur le bureau de l'ordinateur distant, puis j'ai exécuté la commande suivante:

scp [remote username]@192.168.1.X:/home/[remote username]/Desktop/file.jpg /home/[username]/Pictures

et cela a fonctionné, de sorte que cette séquence d'échappement semble être le coupable. Je n'arrive pas à comprendre ce qui ne va pas.)

6
Alcuin Arundel

Les espaces dans les répertoires ou les noms de fichiers sont l'ennemi naturel d'un système Linux, mais ils peuvent bien sûr être échappés avec toute la diligence requise. Il y a 3 possibilités que vous pourriez essayer:

  1. scp [remote username]@192.168.1.X:"'/media/remote_username/photos 4/file.jpg'" .
  2. scp [remote username]@192.168.1.X:"/media/remote_username/photos\ 4/file.jpg" .
  3. scp [remote username]@192.168.1.X:/media/remote_username/photos\\\ 4/file.jpg .

Tous devraient fonctionner, mais certains sont syntaxiquement plus faciles à comprendre que d'autres ...

Références:

6
andrew.46