Envoyer plusieurs fichiers à plusieurs emplacements en utilisant scp

J’ai besoin d’envoyer plusieurs fichiers à plusieurs endroits, mais je ne peux pas trouver le bon moyen.

Par exemple, je dois envoyer un fichier1 à location1 et un fichier2 à location2. C’est ce que je fais:

scp file1 file2 [email protected]:/location1 /location2 

Mais ça ne fonctionne pas. Toute suggestion?

Il n’est pas possible d’envoyer à plusieurs sites distants avec une seule commande scp . Il peut accueillir plusieurs fichiers sources, mais une seule destination. En utilisant uniquement la commande scp elle-même, elle doit être exécutée deux fois.

 scp file1 file2 [email protected]:/location1 scp file1 file2 [email protected]:/location2 

Il est possible de transformer ceci en un “one-liner” en exécutant une boucle for. En bash par exemple:

 for REMOTE in "[email protected]:/location1" "[email protected]:/location2"; do scp file1 file2 $REMOTE; done 

scp fonctionne encore plusieurs fois mais la boucle prend en charge l’itération. Cela dit, je trouve plus facile d’exécuter la commande une fois, appuyez sur la flèche vers le haut (qui ramène la commande d’origine dans la plupart des environnements) et modifiez simplement l’emplacement distant et renvoyez.

vous pouvez placer votre commande scp dans le fichier .sh et exécuter les commandes scp avec le nom d’utilisateur et le mot de passe sur une seule ligne

vim ~ / fileForSCP.sh

 #!/bin/sh sshpass -p {password} scp file1 [email protected]:/location1 sshpass -p {password} scp file2 [email protected]:/location2 sshpass -p {password} scp file3 [email protected]:/location3 ... sshpass -p {password} scp file{n} [email protected]:/location{n} 

et alors:

 chmod 777 ~/fileForSCP.sh ~/fileForSCP.sh 

Vous ne pouvez pas le faire avec une seule commande scp . Utilisez simplement scp deux fois:

 scp file1 [email protected]:/location1 scp file2 [email protected]:/location2 

vous pouvez construire l’arborescence distante souhaitée en utilisant des liens sym par exemple

ln -s file1 target / location1 / file1 … etc

après cela, vous pouvez utiliser une copie de déréférencement pour pousser ces fichiers

rsync -rL cible -e utilisateur ssh @ hôte: / tmp

Salut, il y a un Hack à faire pour cette requête, car SCP ne cible que la seule destination, mais vous avertit que cela pourrait être un peu naïf mais que votre travail est terminé. utiliser l’opérateur && entre deux appels SCP

Je l’utilise comme ceci:

 scp fileTosend userName1@IPAddress_1:path/to/folder && scp fileToSend userName2@IPAddress_2:path/to/folder 

Cela enverra simultanément les données aux deux destinations.