scp'ing wielu plików za jednym razem - do wielu miejsc docelowych na jednym serwerze docelowym?

9

Chciałbym przesłać około pół tuzina plików w kilku katalogach do tych samych katalogów na komputerze docelowym.

Czy bez użycia kluczy ssh jest to możliwe w jednym połączeniu?

Na przykład:

scp /path/to/fileA,/anoth/erpath/to/fileB,/yet/more/files/*    #continue next line
    destination:/path/to,/anoth/erpath/to,/yet/more/files
królikarnia
źródło

Odpowiedzi:

8

Spakuj pliki po stronie wysyłającej i rozpakuj je po stronie odbierającej.

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

Możesz także napisać skrypt do sesji sftp lub użyć rsync z odpowiednim filtrem.

Gilles „SO- przestań być zły”
źródło
jeśli masz tylko kilka plików, które musisz skopiować w całości, doceniam scp -rrozwiązanie. ale dla więcej jest to znacznie szybsze.
xaedes,
4

Możesz skopiować z wielu src do jednego miejsca docelowego. scp -r src1 src2 ... dst Ale nie do wielu miejsc docelowych.

Jedną z opcji jest skopiowanie całego katalogu do tymczasowego katalogu docelowego. Następnie przenieś je z powrotem.

fseto
źródło
działa to tak dobrze, jak rozwiązanie tar-ssh. a łatwiej jest pisać / zapamiętywać. przekazuje również informacje zwrotne na temat przesyłanych danych. ALE jeśli masz wiele małych plików do skopiowania tar-ssh, będzie to znacznie szybsze, ponieważ musi tylko przesłać jeden duży plik, podczas gdy scp-r kopiuje każdy plik osobno, z większym nakładem pracy.
xaedes,
1

Spójrz na psshpaczkę. Ma parallel-scppolecenie. -hopcja umożliwia podanie pliku tekstowego z wieloma hostami jako miejscem docelowym (jeden na linię).

Casual Coder
źródło
czy to się dzieje, gdy trzeba pytać o hasło za każdym razem, gdy plik z A przechodzi do B?
warren
2
Do tego używam ssh-add. Swoje poświadczenia wpisujesz raz na początku dnia. Następnie logujesz się automatycznie.
Casual Coder,
0

Korzystam z następującego polecenia, aby skopiować wiele plików do wielu miejsc docelowych.

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

to polecenie działa jak następujący zestaw poleceń

scp -r src1 dest1

scp -r src1 dest2

.

.

.

scp -r src3 dest2

scp -r src3 dest3

Junaid Malik
źródło
Nie działa, gdy próbuję. ubuntu@landslide:~$ scp -r {test1,test2} landslide:/home/ubuntu/{test3,test4} scp: /home/ubuntu/test4: No such file or directoryChce, aby miejscem docelowym był katalog.
sudo