web-dev-qa-db-fra.com

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

J'utilise toujours rsync ou scp pour copier le fichier de/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 puis scp.

Est-il aussi efficace d'utiliser simplement le -C que de zipper et décompresser? Quand est-ce que l'un ou l'autre processus accélère le transfert?

37
Remi.b

Cela ne fera jamais vraiment de grande différence, mais compresser le fichier avant de le copier devrait être un peu moins efficace car l'utilisation d'un format de conteneur tel que Zip qui peut encapsuler plusieurs fichiers (comme tar) n'est pas nécessaire et il n'est pas possible de diffuser l'entrée et la sortie Zip (vous avez donc besoin d'un fichier temporaire).

Utiliser gzip d'autre part, au lieu de Zip devrait être exactement le même puisque c'est ce que ssh -C fait sous le capot ... sauf que se gzipper est plus de travail que de simplement utiliser ssh -C.

24
Celada

Le -C flag permet une compression gzip d'un flux SSH.

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

Les performances du drapeau dépendent du type de données que vous transférez:

  • Lors du transfert d'un seul fichier volumineux, les performances seraient presque identiques à la fermeture éclair du fichier avant le transfert (en négligeant l'efficacité de l'algorithme Zip vs gzip).

    Mais en utilisant -C est un effort moindre pour vous en tant qu'utilisateur.

  • Lors du transfert de nombreux petits fichiers, les performances seront inférieures à la fermeture éclair des fichiers avant le transfert.

    Cela s'explique par le fait qu'avant chaque transfert de fichier, il existe une communication interactive entre le serveur SCP et le client (pour l'échange de métadonnées de fichier, comme l'horodatage et les autorisations). Les deux parties doivent donc attendre un peu pour que l'autre réponde (la compression n'aidera pas en attendant). C'est une perte de temps pour chaque fichier transféré. Le temps perdu dépend de la latence de la connexion. En fin de compte, le transfert peut être plus lent.

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

21
Martin Prikryl

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

Sur les connexions lentes cela accélérera les choses, sur toute connexion raisonnablement rapide (100Mbit ou plus rapide) la compression est très susceptible de ralentir les choses.

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

9
Wayne Walker