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

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.


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.


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).


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


Ç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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.