scp'ing múltiples archivos en una sola pasada - a múltiples destinos en un servidor de destino?

9

Me gustaría scp alrededor de media docena de archivos en un par de directorios a los mismos directorios en una máquina de destino.

Sin utilizar claves ssh, ¿es esto posible en una llamada?

Por ejemplo:

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

Respuestas:

8

Comprima los archivos en el lado de envío y descomprímalos en el lado de recepción.

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

También puede escribir una sesión sftp o usar rsync con el filtro correcto.

Gilles 'SO- deja de ser malvado'
fuente
Si solo tiene unos pocos archivos que tiene que copiar en total, agradezco la scp -rsolución. pero para más esto es mucho más rápido.
xaedes
4

Puede copiar desde múltiples src a un destino. scp -r src1 src2 ... dst Pero no a múltiples destinos.

Una opción es copiar todo el directorio a un directorio de destino temporal. Luego muévalos hacia atrás después.

fseto
fuente
esto funciona tan bien como la solución tar-ssh. Además, es más fácil escribir / recordar. También le brinda retroalimentación sobre lo que se está cargando. PERO si tiene muchos archivos pequeños para copiar tar-ssh será mucho más rápido, ya que solo tiene que transferir un archivo grande, mientras que scp-r copia cada archivo individualmente con mucha más sobrecarga.
xaedes
1

Mira el psshpaquete. Tiene parallel-scpmando. -hLa opción le permite proporcionar un archivo de texto con varios hosts como destino (uno por línea).

Codificador casual
fuente
¿Se soluciona esto al pedir las contraseñas cada vez que un archivo de A va a B?
warren
2
Para eso estoy usando ssh-add. Escribe sus credenciales una vez al comienzo de un día. Entonces inicias sesión automáticamente.
Codificador informal
0

Utilizo el siguiente comando para copiar múltiples archivos a múltiples destinos.

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

este comando actúa como el siguiente conjunto de comandos

scp -r src1 dest1

scp -r src1 dest2

.

.

.

scp -r src3 dest2

scp -r src3 dest3

Junaid Malik
fuente
No funciona cuando lo intento. ubuntu@landslide:~$ scp -r {test1,test2} landslide:/home/ubuntu/{test3,test4} scp: /home/ubuntu/test4: No such file or directoryQuiere que el destino sea un directorio.
sudo