scp
não é muito inteligente: quando são fornecidos vários argumentos de linha de comando que são arquivos do mesmo host remoto, ele abre uma nova conexão para cada argumento.
Você pode usar em rsync
vez de scp
, é mais inteligente dessa maneira (e de outras maneiras).
rsync -r -e 'ssh -P PORT' user@host:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/
Outra abordagem é passar um único argumento para scp
descrever vários arquivos .
Uma abordagem diferente é configurar o sistema para que você não precise se autenticar o tempo todo. De preferência, configure a autenticação de chave , que na maioria dos cenários é mais conveniente e mais segura. Como alternativa, ou além disso, configure o compartilhamento de conexão , para que você só precise se autenticar uma vez por sessão. De qualquer forma, configure um alias para não precisar especificar o nome de usuário e a porta sempre. No seu ~/.ssh/config
:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
Host nick
HostName real-host-name.example.com
User bob
Port 1234
Execute ssh -Nf nick
para abrir uma conexão e, em seguida, todas as conexões subseqüentes nick
serão transferidas para a conexão existente. Agora você pode simplesmente correr
scp -r nick:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/