scp
nie jest zbyt mądry: gdy podano wiele argumentów wiersza poleceń, które są plikami z tego samego zdalnego hosta, otwiera nowe połączenie dla każdego argumentu.
Możesz użyć rsync
zamiast scp
, jest mądrzejszy w ten sposób (i na inne sposoby).
rsync -r -e 'ssh -P PORT' user@host:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/
Innym podejściem jest przekazanie jednego argumentu scp
opisującego wiele plików .
Innym podejściem jest takie skonfigurowanie systemu, aby nie trzeba było cały czas uwierzytelniać. Najlepiej skonfiguruj uwierzytelnianie klucza , które w większości scenariuszy jest zarówno wygodniejsze, jak i bezpieczniejsze. Alternatywnie lub dodatkowo skonfiguruj udostępnianie połączenia , aby uwierzytelnianie odbywało się tylko raz na sesję. W każdym razie skonfiguruj alias, aby nie trzeba było podawać nazwy użytkownika i portu za każdym razem. W twoim ~/.ssh/config
:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
Host nick
HostName real-host-name.example.com
User bob
Port 1234
Uruchom, ssh -Nf nick
aby otworzyć połączenie, a następnie wszystkie kolejne połączenia nick
przekierują na istniejące połączenie. Teraz możesz po prostu biegać
scp -r nick:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/