L'option de compression -z avec rsync accélère-t-elle la sauvegarde?

Dans rsync , -z compressera datatables du file pendant le transfert.

Si je comprends bien, -z compresser les files avant le transfert, puis les décompresser après le transfert. Le time réduit lors du transfert en raison de la compression surpasse-t-il le time de compression et de décompression?

Est-ce que la réponse à la question dépend de si je sauvegarde sur un disque dur externe via USB (2.0 ou 3.0), ou à un server par SSH sur Internet?

C'est une question générale. La compression et la décompression aux points de terminaison améliorent-elles la bande passante effective d'un lien?

La bande passante effective (perçue) d'un lien faisant de la compression et de la décompression aux extrémités est fonction de:

  1. à quelle vitesse vous pouvez compresser (votre vitesse du processeur)
  2. bande passante réelle de votre réseau

La fonction est décrite avec ce graphique 3D, que vous pouvez consulter pour votre situation particulière:

entrer la description de l'image ici

Le graphique provient de l'article Compression Tools Compared 2005 de http://www.linuxjournal.com/ .

Si vous avez une connection très lente (pensez GPRS), vous voulez certainement compresser vos données autant que possible, sinon votre connection va ralentir les choses.

Si vous avez un processeur très lent et une connection rapide (comme un périphérique réseau embedded), vous ne voulez généralement pas compresser vos données, sinon votre processeur va ralentir les choses.

Oui, la vitesse de la connection détermine si la vitesse augmente. Il ne sera utilisé que pour la sauvegarde USB, car les disques ne génèrent pas datatables mais le process d'écriture des données. Donc, la même machine qui lit et dégonflé, doit gonfler et écrire aussi. Rsync est encore deux process je pense mais votre memory pour transmettre des données d'un process à l'autre est assez rapide et le processeur a besoin de plus de time pour le compresser (en le lisant dans la même memory qui le transmet plus tard :).

La compression aide seulement quand vous avez un expéditeur et un récepteur rsync et un réseau plus lent entre les deux. 1Gbit peut être déjà assez rapide quand vous avez un NAS local par exemple, 10Gbit est déjà une vitesse SATA brute. La compression n'est donc nécessaire que si vous avez une connectivité de 100 Mbits ou less et cela n'a de sens que lorsque datatables compressées sont compressibles.

Je pense que rsync pourrait remarquer qu'il ne fonctionne pas sur deux machines mais un et saute la compression mais pas sûr.

Cela dépend de la compressibilité de vos données et de la puissance de traitement de votre source et de votre destination. Une sauvegarde de disque complète dans mon expérience compressera à environ 30-50% de sa taille d'origine, il pourrait donc être utile de lui donner un coup de feu. Sinon, ne vous embêtez pas avec la compression. Il pourrait être utile de tester votre taux de compression avec pigz -c <your file> | wc -c pigz -c <your file> | wc -c et comparez la taille returnnée avec votre taille d'origine.

tl; dr Sur les bindings de transfert lentes, compressez, sinon ne le faites pas. Voici un test de vitesse de compression, un lien vers un outil de conversion de bande passante et des informations.

L'utilisation de la compression avec rsync accélérera seulement si le lien intermédiaire est «assez lent», c'est-à-dire si la machine à une extrémité est capable de produire un stream de données compressé assez rapidement pour saturer le lien de communication.

Alors, quel est le lien le plus lent auquel je devrais utiliser la compression pour gagner quelque chose?

Ce qui suit est un test très peu scientifique, qui montrera à quelle vitesse gzip peut produire des données, et ce que cela signifie pour savoir si vous devez compresser les transferts de masse de votre réseau en général.

Les données d'input changeront grandement le résultat du test. J'utilise un file normal non compressé (!) Sur mon ordinateur qui peut être représentatif du type de données que je transfère habituellement sur les réseaux. L'utilisation de /dev/zero (produisant des zéros illimités) serait trompeuse car un stream de zéros serait très facile à compresser, et utiliser /dev/random serait trompeur pour la raison inverse. Donc, à la place, j'utilise un file tar de mon directory $HOME/local , qui contient le logiciel que j'ai installé dans mon $HOME . Le file est décompressé en lui-même, mais contient un mélange de files binarys, de petits files compressés et de files source / text, et je le compresserai avec un réglage par défaut de gzip de 67% de 64 MiB à 22 MiB.

 $ gzip -c local.tar | dd of=/dev/null 43092+4 records in 43093+1 records out 22063854 bytes transferred in 2.819 secs (7825741 bytes/sec) 

Je le fais quelques fois pour avoir une idée de ce que la moyenne pourrait être, et il s'agit d'environ 7800000 octets / s.

Ensuite, j'utilise une calculasortingce de bande passante réseau pour voir ce que cela convertit. Dans ce cas particulier, il se trouve juste sous la capacité d'une binding filaire «100Mb Ethernet», juste plus rapide qu'une binding Internet «VDSL Download», légèrement plus rapide qu'une binding sans fil «802.11 [a / g]» et quelque part entre "Bluetooth v3.0" (plus lent) et "USB 2.0" (plus rapide).

Cela signifie que si j'utilise la compression sur n'importe quoi plus rapide que cela, la compression ralentira probablement le transfert du file.

rsync n'utilise peut-être pas exactement les mêmes bibliothèques que gzip pour faire de la compression, mais ce qui précède vous donnera un petit indice au less.

rsync fait plus que de la compression, comme vous le savez, et l'augmentation de la vitesse réelle provient uniquement du transfert de [bits de] files qui ont changé.

Dans ma propre expérience, l'utilisation de la compression avec rsync est devenue de less en less bénéfique depuis une dizaine d'années, à mesure que la bande passante des réseaux a augmenté (où je suis).

Pour faire des sauvegardes incrémentales, je reorderais certainement l'option --link-dest (cela n'a rien à voir avec ce qui est transféré, seulement avec la façon dont les choses sont stockées sur la cible). En outre, si vous le faites sur SSH, n'utilisez pas de compression si votre connection SSH est déjà compressée et ne compressez que les connections SSH (tunnels, etc.) sur des bindings lentes, pour les mêmes raisons que ci-dessus.