scp
не очень умен: при задании нескольких аргументов командной строки, являющихся файлами с одного и того же удаленного хоста, он открывает новое соединение для каждого аргумента.
Вы можете использовать rsync
вместо этого scp
, это умнее (и другими способами).
rsync -r -e 'ssh -P PORT' user@host:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/
Другой подход заключается в передаче одного аргумента, scp
который описывает несколько файлов .
Другой подход - настроить вашу систему так, чтобы вам не приходилось все время проходить аутентификацию. Желательно настроить аутентификацию по ключу , которая в большинстве случаев более удобна и безопасна. В качестве альтернативы или дополнения настройте общий доступ к соединению , чтобы вам нужно было проходить аутентификацию только один раз за сеанс. В любом случае установите псевдоним, чтобы вам не приходилось каждый раз указывать имя пользователя и порт. В вашем ~/.ssh/config
:
ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r
Host nick
HostName real-host-name.example.com
User bob
Port 1234
Запустите, ssh -Nf nick
чтобы открыть соединение, а затем все последующие соединения nick
будут использовать текущее соединение. Теперь вы можете просто запустить
scp -r nick:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/