scp
n'est pas très intelligent: lorsqu'il reçoit plusieurs arguments de ligne de commande qui sont des fichiers du même hôte distant, il ouvre une nouvelle connexion pour chaque argument.
Vous pouvez utiliser à la rsync
place de scp
, c'est plus intelligent de cette façon (et d'autres manières).
rsync -r -e 'ssh -P PORT' user@host:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/
Une autre approche consiste à passer un seul argument à scp
celui qui décrit plusieurs fichiers .
Une approche différente consiste à configurer votre système afin que vous n'ayez pas à vous authentifier tout le temps. De préférence, configurez l'authentification par clé , qui est dans la plupart des scénarios à la fois plus pratique et plus sécurisée. Vous pouvez également, ou en plus, configurer le partage de connexion , de sorte que vous ne devez vous authentifier qu'une seule fois par session. Dans tous les cas, configurez un alias pour ne pas avoir à spécifier le nom d'utilisateur et le port à chaque fois. Dans votre ~/.ssh/config
:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
Host nick
HostName real-host-name.example.com
User bob
Port 1234
Exécutez ssh -Nf nick
pour ouvrir une connexion, puis toutes les connexions suivantes nick
seront superposées à la connexion existante. Maintenant, vous pouvez simplement exécuter
scp -r nick:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/