scp'ing múltiplos arquivos em uma passagem - para vários destinos em um servidor de destino?

9

Gostaria de scp cerca de meia dúzia de arquivos em alguns diretórios para os mesmos diretórios em uma máquina de destino.

Sem utilizar as teclas ssh, isso é possível em uma chamada?

Por exemplo:

scp /path/to/fileA,/anoth/erpath/to/fileB,/yet/more/files/*    #continue next line
    destination:/path/to,/anoth/erpath/to,/yet/more/files
Warren
fonte

Respostas:

8

Feche os arquivos no lado de envio e descompacte-os no lado de recebimento.

tar -cf - /path/to/fileA /anoth/erpath/to/fileB /yet/more/files/* |
ssh -C destination 'cd / && tar -xf -'

Você também pode criar um script de uma sessão sftp ou usar o rsync com o filtro certo.

Gilles 'SO- parar de ser mau'
fonte
se você tiver apenas alguns arquivos, precisará copiar no total do que eu aprecio a scp -rsolução. mas para mais isso é muito mais rápido.
Xaedes #
4

Você pode copiar de vários src para um destino. scp -r src1 src2 ... dst Mas não para vários destinos.

Uma opção é copiar todo o diretório para um diretório de destino temporário. Depois, mova-os de volta depois.

fseto
fonte
isso funciona tão bem quanto a solução tar-ssh. além disso, é mais fácil digitar / lembrar. também fornece feedback sobre o que está sendo carregado. MAS, se você tiver muitos arquivos pequenos para copiar o tar-ssh, será muito mais rápido, pois ele só precisará transferir um arquivo grande, enquanto o scp-r copia cada arquivo individualmente com muito mais sobrecarga.
Xaedes #
1

Veja o psshpacote. Tem parallel-scpcomando. -hA opção permite fornecer arquivo de texto com vários hosts como destino (um por linha).

Casual Coder
fonte
isso evita a necessidade de solicitar as senhas sempre que um arquivo de A for para B?
warren
2
Para isso eu estou usando ssh-add. Você digita suas credenciais uma vez no início de um dia. Então você é logado automaticamente.
Casual Coder
0

Eu uso o seguinte comando para copiar vários arquivos para vários destinos.

scp -r src {1,2,3} dest {1,2,3}

esse comando age como o seguinte conjunto de comandos

scp -r src1 dest1

scp -r src1 dest2

.

.

.

scp -r src3 dest2

scp -r src3 dest3

Junaid Malik
fonte
Não funciona quando tento. ubuntu@landslide:~$ scp -r {test1,test2} landslide:/home/ubuntu/{test3,test4} scp: /home/ubuntu/test4: No such file or directoryEle quer que o destino seja um diretório.
sudo