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.