Рейтинг:0

scp with -C flag does not perform compression

флаг ru

The scp man page shows that the -C flag can be used for compressing a file on the fly while performing a remote copy -

$ man scp | grep "\-C"
     -C      Compression enable.  Passes the -C flag to ssh(1) to enable compression.

However, when I perform scp with and without the flag, the file size remains the same -

Without the flag:

$ scp root@remote-host:/path/to/file/* .
Password:
core_dump                                                                100% 7832MB 110.6MB/s   01:10

$ ls -lh
total 7.7G
-rw------- 1 user group 7.7G Jan  4 16:19 core_dump

With the compression flag:

$ scp -C root@remote-host:/path/to/file/* .
Password:
core_dump                                                                100% 7832MB  69.8MB/s   01:52
$ ls -lh
total 7.7G
-rw------- 1 user group 7.7G Jan  4 16:21 core_dump

I've tried several other options but all yield the same result:

$ scp -o Compression=yes root@remote-host:/path/to/file/* .

$ scp -C -o Compression=yes root@remote-host:/path/to/file/* .

$ scp -C -o Compression=yes -o CompressionLevel=9 root@remote-host:/path/to/file/* .

Is there something that I'm missing here?

Рейтинг:1
флаг cn

СШ -С это сжатие данных в движении по сети, а не данных в состоянии покоя. Другими словами, ssh сжимает и распаковывает на транспортном уровне.

С помощью ssh и каналов можно выполнить сжатие на удаленном хосте, получить этот сжатый поток по умолчанию и записать его на локальный хост. Который сжимает данные в движении и в состоянии покоя.

ssh root@remote-host "zstd /path/to/file/core_dump --stdout" > core_dump.zst

Кавычки значащие, указывающие на удаленную команду. Заменять зстд с gzip или же хз для желаемого формата сжатия.

Также возможно передавать архивы tar через ssh, здесь не обязательно с одним файлом.

флаг ru
Это имеет смысл. У меня было ощущение, что данные сжимались и распаковывались, главным образом потому, что `scp` с флагом `-C` занимало больше времени, но не мог найти никакой конкретной информации об этом. Спасибо!
John Mahowald avatar
флаг cn
Да. При достаточно больших файлах ограничивающим фактором является скорость распаковки ssh или даже скорость записи в хранилище. При отправке сжатых потоков декомпрессия не требуется. Общее количество переданных и записанных байтов уменьшается на коэффициент сжатия. А zstd быстрый и многопоточный.
Рейтинг:0
флаг cf

В ssh позволяет сжатие gzip (под scp).

Это ускорит работу с вялыми соединениями; но при любом достаточно быстром соединении (100 Мбит или быстрее) сжатие почти наверняка замедлит работу.

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

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.