Você não pode ter vários destinos em um comando scp
. Se você quiser fazer uma única conexão SSH, precisará usar outra ferramenta.
A solução mais simples é montar o sistema de arquivos remoto através do SSHFS e depois usar o comando cp
. Isso requer acesso SFTP.
mkdir host_server
sshfs username@host_server:/file host_server
cp /file/source1/* host_server/destination1
cp /file/source2/* host_server/destination2
cp /file/source3/* host_server/destination3
fusermount -u host_server
rmdir host_server
Outra solução é primeiro organizar os arquivos localmente e depois copiar a hierarquia. Isso requer rsync.
mkdir destination1 destination2 destination3
ln -s /file/source1/* destination1
ln -s /file/source2/* destination2
ln -s /file/source3/* destination3
rsync -a --copy-unsafe-links destination1 destination2 destination3 username@host_server:/file
rm -r destination1 destination2 destination3
Outra solução é continuar usando scp
, mas primeiro abra uma conexão mestre para o servidor. Isso é explicado em Uso de um canal SSH já estabelecido
Alternativamente, basta agüentar e fazer três scp
de conexões. Mas não use sua senha para efetuar login; em vez disso, crie um par de chaves e carregue a chave privada no seu agente de chaves ( ssh-add ~/.ssh/id_rsa
), então você não precisará digitar nada em cada conexão.