La semaine passée j'ai dû copier des fichiers entre plusieurs machines. J'ai fait comme d'habitude, j'ai utilisé scp de la manière suivante :

  1. scp host:fileWithoutSpaces .

Jusqu'au moment où je suis tombé sur un fichier comportant des espaces. Cette syntaxe n'était plus du tout valide car scp considère les espaces comme des séparateurs de fichiers. Dans ce cas, il faut utiliser la syntaxe suivante :

  1. scp host:"file\ with\ spaces" .

Il ne faut oublier ni les " ni les \.

En recherchant cette syntaxe, j'ai trouvé quelques petites choses intéressantes à faire avec scp. Alors en bonus :

  1. # Copier plusieurs fichiers en une seule fois :
  2. scp host:"file1 file2 file3" .
  3.  
  4. # Copier un répertoire complet :
  5. scp -r host:folder .
  6.  
  7. # Copier plusieurs fichiers vers une machine distante
  8. scp file1 file2 file3 host:.
  9.  
  10. # Copier un fichier avec espaces vers une machine distante
  11. scp file\ with\ spaces host:.
  12. # ou
  13. scp "file with spaces" host:.