scp'инг нескольких файлов за один проход - нескольким получателям на одном целевом сервере?


9

Я хотел бы найти около полудюжины файлов в нескольких каталогах в тех же каталогах на целевой машине.

Без использования ключей SSH возможно ли это за один вызов?

Например:

scp /path/to/fileA,/anoth/erpath/to/fileB,/yet/more/files/*    #continue next line
    destination:/path/to,/anoth/erpath/to,/yet/more/files

Ответы:


8

Заархивируйте файлы на отправляющей стороне и разархивируйте их на принимающей стороне.

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

Вы также можете написать скрипт sftp или использовать rsync с правильным фильтром.


если у вас есть только несколько файлов, которые вы должны скопировать в общей сложности, я ценю scp -rрешение. но для большего это намного быстрее.
xaedes

4

Вы можете скопировать из нескольких источников в один пункт назначения. scp -r src1 src2 ... dst Но не по нескольким направлениям.

Один из вариантов - скопировать весь каталог во временный каталог назначения. Затем переместите их обратно потом.


это работает так же хорошо, как решение tar-ssh. плюс легче набирать / запоминать. это также дает вам обратную связь, что загружается. НО, если у вас много маленьких файлов, копировать tar-ssh будет намного быстрее, так как ему нужно только передать один большой файл, тогда как scp-r копирует каждый файл отдельно с гораздо большими издержками.
xaedes

1

Посмотри на psshпакет. У него есть parallel-scpкоманда. -hОпция позволяет вам предоставить текстовый файл с несколькими хостами в качестве места назначения (по одному на строку).


это обходится вокруг необходимости запрашивать пароли каждый раз, когда файл из A попадает в B?
Уоррен

2
Для этого я использую ssh-add. Вы вводите свои учетные данные один раз в начале дня. Тогда вы авторизуетесь автоматически.
Случайный кодер

0

Я использую следующую команду для копирования нескольких файлов в несколько мест назначения.

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

эта команда действует как следующий набор команд

scp -r src1 dest1

scp -r src1 dest2

,

,

,

scp -r src3 dest2

scp -r src3 dest3


Не работает, когда я пытаюсь. ubuntu@landslide:~$ scp -r {test1,test2} landslide:/home/ubuntu/{test3,test4} scp: /home/ubuntu/test4: No such file or directoryОн хочет, чтобы местом назначения был каталог.
Судо
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.