Что делает флаг `-C` именно в` scp`?

Я всегда использую либо rsync, либо scp, чтобы скопировать файл с /на удаленный компьютер. Недавно я открыл в руководстве scp (man scp) флаг -C

 -C      Compression enable.  Passes the -C flag to
         ssh(1) to enable compression.

Прежде чем я обнаружил этот флаг, раньше я использовал zip, а затем scp.

Насколько эффективно использовать -C, чем застегивать и распаковывать? Когда используется тот или иной процесс, сделайте передачу быстрее?

16 голосов | спросил Remi.b 27 J000000Monday15 2015, 20:33:24

2 ответа


13

Это никогда не будет иметь большого значения, но застежка-копирование файла перед копированием его должно быть немного менее эффективным, поскольку используется формат контейнера, например zip, который может инкапсулировать несколько файлов (например, tar), не требуется, и невозможно передать поток и вывод zip (так что вам нужен временный файл).

С помощью gzip, а не zip должно быть точно таким же, поскольку это то, что ssh -C делает под капотом ... кроме того, что gzipping себя больше работает чем просто использовать ssh -C.

ответил Celada 27 J000000Monday15 2015, 20:40:59
11

Флаг -C позволяет сжатие gzip потока SSH.

Это эквивалент Accept-Encoding: gzip в HTTP.

Как работает флаг, зависит от типа передаваемых данных:

  • При передаче одного большого файла производительность будет близка к тому, чтобы закрепить файл перед передачей (пренебрегая эффективностью алгоритма zip vs. gzip).

    Но использование -C - это меньше усилий для вас как пользователя.

  • При переносе большого количества небольших файлов производительность будет ниже, чем при переносе файлов.

    Причина заключается в том, что перед каждой передачей файла существует интерактивная связь между сервером SCP и клиентом (для обмена метаданными файлов, такими как временная метка и разрешения). Поэтому обе стороны должны немного подождать, чтобы другая сторона ответила (сжатие не поможет во время ожидания). Это потерянное время для каждого переданного файла. Сколько времени тратится впустую, зависит от латентности соединения. В конце концов, передача может быть медленнее.

    Когда вы переносите один заархивированный файл, это сообщение происходит только один раз.

ответил Martin Prikryl 28 J000000Tuesday15 2015, 09:30:56

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132