scp связка файлов через bash-скрипт: должен быть лучший способ - PullRequest
5 голосов
/ 18 января 2011

У меня в настоящее время есть следующий скрипт bash:

for a in `seq 16 75`; 
do scp doneill@server:/mnt/device/folder/numbered_file$a.txt ./; 
done;

, хотя это работает, он очень медленный.Каждый файл, запрос к серверу занимает около 4-7 секунд, затем отправка файла занимает еще около 3 секунд.

Есть ли способ сделать это, который включает только одну команду, отправленную на сервер (чтобы минимизировать время, которое моя VPN тратит на отправку, получая каждую отдельную команду)?Обычно я делал бы что-то вроде scp doneill@server:/mnt/device/folder/numbered_file*, но в папке много тысяч файлов, которые я не хочу копировать.Мне нужно получить только те немногие (определяется последовательностью).

Ответы [ 3 ]

4 голосов
/ 18 января 2011

В Баш:

scp doneill@server:/mnt/device/folder/numbered_file{16..75}.txt ./
3 голосов
/ 18 января 2011

Rsync должен сделать трюк: http://www.manpagez.com/man/1/rsync/

Возможно, вам придется немного поиграться с параметрами, но все сделано правильно, это, вероятно, самый быстрый способ передачи файлов по ssh.

2 голосов
/ 18 января 2011

Работает ли это с bash?

scp doneill@server:/mnt/device/folder/numbered_file{16..75}.txt ./
...