scp'ing plusieurs fichiers en un seul passage - vers plusieurs destinations sur un serveur cible?

9

Je voudrais scp environ une demi-douzaine de fichiers dans quelques répertoires vers les mêmes répertoires sur une machine cible.

Sans utiliser les touches ssh, est-ce possible en un seul appel?

Par exemple:

scp /path/to/fileA,/anoth/erpath/to/fileB,/yet/more/files/*    #continue next line
    destination:/path/to,/anoth/erpath/to,/yet/more/files
garenne
la source

Réponses:

8

Zip les fichiers sur le côté d'envoi et décompressez-les sur le côté de réception.

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

Vous pouvez également créer un script pour une session sftp ou utiliser rsync avec le bon filtre.

Gilles 'SO- arrête d'être méchant'
la source
si vous n'avez que quelques fichiers à copier au total, j'apprécie la scp -rsolution. mais pour plus c'est beaucoup plus rapide.
xaedes
4

Vous pouvez copier de plusieurs src vers une destination. scp -r src1 src2 ... dst Mais pas vers plusieurs destinations.

Une option consiste à copier tout le répertoire dans un répertoire de destination temporaire. Remettez-les ensuite en place.

fseto
la source
cela fonctionne aussi bien que la solution tar-ssh. de plus, il est plus facile de taper / mémoriser. il vous donne également des commentaires sur ce qui est téléchargé. MAIS si vous avez beaucoup de petits fichiers à copier, tar-ssh sera beaucoup plus rapide, car il n'a qu'à transférer un gros fichier, tandis que scp-r copie chaque fichier individuellement avec beaucoup plus de surcharge.
xaedes
1

Regardez le psshpaquet. Il a le parallel-scpcommandement. -hL'option vous permet de fournir un fichier texte avec plusieurs hôtes comme destination (un par ligne).

Codeur occasionnel
la source
est-ce que cela contourne le besoin de demander les mots de passe chaque fois qu'un fichier de A va à B?
warren
2
Pour cela, j'utilise ssh-add. Vous tapez vos informations d'identification une fois au début d'une journée. Ensuite, vous êtes connecté automatiquement.
Casual Coder
0

J'utilise la commande suivante pour copier plusieurs fichiers vers plusieurs destinations.

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

cette commande agit comme l'ensemble de commandes suivant

scp -r src1 dest1

scp -r src1 dest2

.

.

.

scp -r src3 dest2

scp -r src3 dest3

Junaid Malik
la source
Ça ne marche pas quand j'essaye. ubuntu@landslide:~$ scp -r {test1,test2} landslide:/home/ubuntu/{test3,test4} scp: /home/ubuntu/test4: No such file or directoryIl veut que la destination soit un répertoire.
sudo