Que fait exactement le drapeau `-C 'dans` scp`?

J'utilise toujours rsync ou scp pour copyr le file depuis / vers une machine distante. Récemment, j'ai découvert dans le manuel de scp ( man scp ) le drapeau -C

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

Avant de découvrir ce drapeau, j'avais l'habitude de zip avant et puis scp .

Est-il aussi efficace d'utiliser le -C que de compresser et décompresser? Quand est-ce que l'utilisation de l'un ou l'autre process rend le transfert plus rapide?

Cela ne fera jamais vraiment de différence, mais compresser le file avant de le copyr devrait être un peu less efficace car il n'est pas nécessaire d'utiliser un format de conteneur tel que zip qui puisse encapsuler plusieurs files (comme le tar ). stream zip d'input et de sortie (vous avez donc besoin d'un file temporaire).

En utilisant gzip d'autre part, au lieu de zip devrait être exactement la même puisque c'est ce que ssh -C fait sous le capot … sauf que gzipping vous-même est plus de travail que d'utiliser simplement ssh -C .

Il active la compression gzip dans ssh (sous le scp).

Sur les connections lentes , cela accélérera les choses, sur n'importe quelle connection raisonnablement rapide (100Mbit ou plus rapide), la compression est très susceptible de ralentir les choses.

Il sera plus ou less efficace que zip selon que gzip (spécifiquement gzip -6) serait plus ou less efficace que votre niveau de compression zip choisi

Le drapeau -C permet une compression gzip d'un stream SSH.

C'est un équivalent de Accept-Encoding: gzip dans HTTP.

Comment le drapeau qui fonctionne dépend d'un type de données que vous transférez:

  • Lors du transfert d'un seul gros file, la performance serait proche de la même chose pour compresser le file avant le transfert (en négligeant l'efficacité de l'algorithm zip vs. gzip).

    Mais l'utilisation de -C est un effort moindre pour vous en tant qu'user.

  • Lors du transfert d'un grand nombre de petits files, la performance sera inférieure à la compression des files avant le transfert.

    Une raison derrière cela est qu'avant chaque transfert de file, il y a une communication interactive entre le server SCP et le client (pour échanger des métadonnées de files, comme l'horodatage et l'autorisation). Les deux parties doivent donc attendre un peu pour que l'autre partie réagisse (la compression n'aidera pas en attendant). C'est un time perdu pour chaque file transféré. Le time perdu est fonction de la latence de la connection. Au final, le transfert peut être plus lent.

    Lorsque vous transférez un seul file zippé, cette communication ne se produit qu'une seule fois.