Индикатор выполнения команды scp

92

Есть ли способ отобразить индикатор выполнения при копировании с сервера на локальный (или наоборот) с помощью scp?

Абдул Шаджин
источник
Теперь я получаю процент. Но мне нужен индикатор выполнения.
Абдул Шаджин
есть сценарий, но я понятия не имею, как заставить его работать
Uri Herrera
1
Возможно, вы сможете изменить этот скрипт для индикатора выполнения для 'cp'`: chris-lamb.co.uk/2008/01/24/…
Rinzwind
scp -r не показывает индикатор выполнения, но выдает процент от каждого файла
spyderman4g63

Ответы:

93

Я не думаю, что это может быть сделано с scp. В прошлый раз мне нужно было что-то вроде этого, т.е. показанный прогресс, я использовал rsyncвместо этого. Это показывает прогресс в форме бара. Посмотрите, работает ли это для вас.

Вам нужно будет использовать --progressопцию rsync. Вы можете использовать следующую команду:

rsync -r -v --progress -e ssh user@remote-system:/address/to/remote/file /home/user/
binW
источник
1
Я собирался опубликовать что-то подобное, но когда я протестировал это, у меня просто 2741851 0% 700.39kB/s 0:17:21не было графического индикатора выполнения (что, я думаю, хочет ОП).
Оли
1
@ Оли: Я думаю, это потому, что вы копируете очень маленький файл. Копирование заканчивается до того, как rsync сможет показать прогресс. Если вы копируете файл большего размера, вы должны получить индикатор выполнения.
binW
1
Для тех, кто искал cp с индикатором выполнения, rsync прекрасно работает локально, так что это ответит и на этот вопрос! (Просто оставьте -e ssh user@remote-system:для локальной копии и man rsyncобъясните много, много вариантов)
мудрец
1
Если вы хотите подключиться к порту SSH, отличному от используемого по умолчанию, вы можете использовать что-то вродеrsync -avz --progress -e 'ssh -p 1223' root@google.com:/foobar.txt ./my-local-copy.txt
damd
4
зачем использовать в rsync то время как вам просто нужно добавить -vвscp
Самир Сабри
64

-vПереключатель работает нормально.

Пример:

5% 9232KB 357,5KB / с 07:48 ETA

PJ Brunet
источник
6
Это правильный ответ.
int_32
Это должен быть правильный ответ! зачем беспокоиться и установить rsync
Самир Сабри
3
Это не похоже на работу при использовании -3.
fuero
1
@fuero man scp: « -3Копии между двумя удаленными хостами передаются через локальный хост. Без этой опции данные копируются непосредственно между двумя удаленными хостами. Обратите внимание, что эта опция отключает индикатор прогресса. »
Парень с The Hat
4

Я не знаю, как это сделать в командной строке. Я уверен, что это возможно, но для этого есть графический метод.

Nautilus (файловый браузер по умолчанию в Ubuntu) может монтировать серверы ssh / sftp. После этого они действуют как локальная файловая система, и вы можете копировать файлы, как обычно. И вы получите обычный индикатор выполнения, который вы бы сделали с обычной копией.

Посмотрите в Fileменю дляConnect to server...

Оли
источник
4

Начиная с 2018 года, прогресс и ETA отображаются по умолчанию и могут быть отключены -q

Милан Керслагер
источник
не на макос, лол!
Драхенфельс
При этом вы имеете в виду общий прогресс или для каждого файла? Я вижу это только для каждого файла в моем только что установленном Debian 9.
mazunki