Dans le premier cas, vous spécifiez deux fichiers comme cible de copie, tous deux résidant sur remote.net
. Ceci est clairement ambigu, car le programme ne peut pas déterminer où copier le fichier.
Considérons l'exemple de travail suivant, qui spécifie deux fichiers sources et une destination (répertoire) en utilisant le même format :
scp 'me@example.org:file1 file2' .
Cela copiera ambos file1
y file2
de example.org
dans le répertoire local.
Votre région scp
se connecte à l'hôte distant et démarre une autre instance de scp
avec un paramètre déterminant si vous transférez des fichiers de il ( -f
), ou à il ( -t
). Vous pouvez le constater lorsque vous ajoutez l'argument -v
pour une sortie verbeuse. Le paramètre source/destination que vous saisissez ( host:file
) est divisé et la partie noms de fichiers est simplement ajoutée comme paramètres supplémentaires spécifiant les fichiers à utiliser.
En l'utilisant comme source :
debug1: Sending command: scp -v -f -- file1 file2
Cela fonctionne sans problème, il transfère plusieurs fichiers sources sur le réseau.
En l'utilisant comme évier :
debug1: Sending command: scp -v -t -- file1 file2
Cela échoue, car vous avez l'intention d'écrire dans plusieurs fichiers. Le moyen de contourner ce problème est d'échapper le nom du fichier. à nouveau (une fois pour le Shell local, une fois pour l'appel distant) :
$ scp foo 'me@example.org:foo\ bar'
[...]
debug1: Sending command: scp -v -t -- foo\\ bar
Et pour info, scp foo 'me@example.org:"foo bar"'
fonctionne tout aussi bien.