J'utilise toujours soit 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, je le faisais zip
avant et après scp
.
Est-il aussi efficace d’utiliser simplement la -C
compression et le décompression? Quand utiliser un procédé ou un autre pour accélérer le transfert?
scp
compression
file-transfer
Remi.b
la source
la source
scp -rv
etscp -Crv
comparaison du débit.zip
est un format de fichier très "windows" -ish. Vous ne le verrez presque jamais ou n’en aurez pas besoin lorsque vous utiliserez une machine Linux avec un logiciel Linux natif.tar
est utilisé pour enrouler des répertoires dans un fichier tout en conservant les autorisations et les noms et autres, alors quegzip
,bzip2
,xz
, etc sont utilisés pour Compresser des fichiers.tar
s sont souvent compressés, créanttar.gz
ainsitar.xz
des formats communs pour les archives sur Linux. J'ai vu des gens lancer leur proprescp
workalike avec des commandes commetar cvz directory | ssh machine 'cd somewhere; tar xz'
.Compression yes
votre.ssh/config
fichier.Réponses:
Cela ne fera jamais vraiment une grosse 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
celui-ci peut encapsuler plusieurs fichiers (commetar
) n'est pas nécessaire et il n'est pas possible de lire en continu entrée et sortie (vous avez donc besoin d’un fichier temporaire).Utiliser
gzip
en revanche, au lieu dezip
devrait être exactement le même puisque c’est ce qui sessh -C
fait sous le capot ... sauf que gzipper est plus de travail que de simplement utiliserssh -C
.la source
gzip
est. Votre réponse signifie-t-elle quescp -rC
c'est probablement la solution la plus efficace que j'ai?-C
compresse un flux de protocole interactif. Vous ne considérez que les données. Donc, vos conclusions sont fausses. Voir ma réponseL'
-C
indicateur permet la compression gzip d'un flux SSH.C'est un équivalent de
Accept-Encoding: gzip
HTTP.Le comportement de l'indicateur dépend du type de données que vous transférez:
Lors du transfert d'un seul fichier volumineux, les performances seraient pratiquement identiques à celles du fichier compressé avant le transfert (efficacité négligée de l'algorithme zip par rapport à l'algorithme gzip).
Mais utiliser
-C
est un effort moindre pour vous en tant qu'utilisateur.Lors du transfert de nombreux petits fichiers, les performances seront inférieures à la compression 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, telles que l'horodatage et les autorisations). Les deux parties doivent donc attendre un peu pour que l'autre partie réponde (la compression ne résoudra pas le problème en attendant). C'est un temps perdu pour chaque fichier transféré. La perte de temps 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.
la source
Il active la compression gzip en ssh (sous le scp).
Sur des connexions lentes , cela accélérera les choses. Sur toute connexion raisonnablement rapide (100 Mbits ou plus rapide), la compression risque fort de ralentir les choses.
Il sera plus ou moins efficace que zip selon que gzip (plus précisément gzip -6) sera plus ou moins efficace que le niveau de compression zip que vous avez choisi.
la source
.bin
et les.txt
fichiers). Donc, vous suggéreriez simplement d’utiliserscp -r
, pas de-C
drapeau et nonzip
,gzip
nontar
?