Может быть какая-то разница в скорости в простой команде «копировать» для большого (2 ГБ) файла между локальным и SSH выполнением?

232
Sopalajo de Arrierez

Пример сценария:
- Linux- машина (я думаю, что операционная система не беспокоит).
- Сервер OpenSSH .
- Исходный большой файл на жестком диске, около 2 ГБ (я думаю, SSD или классический HD не беспокоит, ни).
- Назначение для файла: (умеренно быстрый 2.0) USB-накопитель (я думаю, что 3.0 или даже 1.0 не будут беспокоить, ни).

Я собираюсь заказать простое:

cp MyBigFile.iso /media/pendrive 

Pendrive подключен к той же машине.
Два случая:

  1. Локальная оболочка (я сижу на машине и делаю cp) выполнение упорядоченной копии большого файла.
  2. Оболочка SSH (я захожу на другой компьютер в той же локальной сети и захожу через SSH-клиент) удаленно заказала копию большого файла.

Есть ли смысл ожидать разницы в скорости? Зачем?

Я думаю, что на самом деле, когда копия включает в себя много небольших файлов, связь (для оболочки SSH) между сервером и клиентом может добавить много небольших задержек (не стесняйтесь исправлять и эту логику, если вы считаете, что я не прав), но Я не уверен насчет больших.

(Не стесняйтесь высказывать мнение о моих сценариях "не беспокоить", также выше.)

0
Я подозреваю, что если вы копируете файлы с локального компьютера на флеш-накопитель, подключенный к указанному компьютеру, единственная разница в скорости - это время, которое требуется машине для получения команды копирования (ssh медленнее). Я могу ошибаться (отсюда просто комментарий) и нашел бы ответ интересным. Matthew Williams 10 лет назад 1
Тот же компьютер, @MatthewWilliams. Я отредактировал вопрос, чтобы показать его, спасибо. Sopalajo de Arrierez 10 лет назад 0
Да, я предполагал, что это так. Спасибо за разъяснение, хотя. Matthew Williams 10 лет назад 0

1 ответ на вопрос

2
Alan Shutko

When you ssh into a machine and run cp fromFile toFile, that copy runs completely on the remote machine. It does not communicate over ssh to do the copy. In fact, without any arguments, cp won't even report progress to the ssh session, it will only complete and then you'll see the prompt.

If you are copying a lot of small files, and use cp -v, cp will print the name of each file as it copies it. Printing the name will cause communication over the ssh connection. It's possible that if you have a slow connection, the cp command will print filenames faster than ssh can transmit them over the wire, and it seems possible that after printing enough filenames, cp could block trying to write to stdout.

I've never actually seen this happen, and disk speed has always been the limiting factor, but I think it's theoretically possible.

не должна ли команда `cp` ** сообщать о прогрессе ** сеансу * SSH * даже для копии файла большого размера? Если да, то этот отчет о проделанной работе, если он будет сделан часто, не замедлит ли что-либо передачу? Sopalajo de Arrierez 10 лет назад 0
Если вы запускаете `cp` без флагов, он не сообщает ни о каком прогрессе. Он просто работает тихо и в конце концов заканчивается. Если вы запустите `cp -v`, он сообщит имена файлов каждого файла, который копирует, но имена файлов маленькие. Как это работает, `cp` будет записывать в буфер, а` ssh` будет читать из буфера. Единственный способ замедлить `cp` - это заполнить буфер до того, как ssh сможет отправить информацию по сети. Alan Shutko 10 лет назад 1