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


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

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

Один з варіантів - скопіювати весь каталог у тимчасовий каталог призначення. Потім перемістіть їх назад.


це працює так само добре, як тар-сш-рішення. плюс простіше набрати / запам'ятати. він також дає відгуки про те, що завантажується. Але якщо у вас є багато маленьких файлів, то скопіювати tar-ssh буде набагато швидше, оскільки він повинен перенести лише один великий файл, тоді як scp-r копіює кожен файл окремо з набагато більшими накладними витратами.
xaedes

1

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


чи обходиться це потреба запитувати паролі кожного разу, коли файл з A переходить до B?
warren

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.