Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Cet article examine les outils de sauvegarde qui effectuent des sauvegardes en créant des archives sur un serveur de sauvegarde.

Parmi ceux qui répondent aux exigences se trouvent duplicity (pour lequel il existe une interface agréable sous la forme de deja dup) et duplicati.

Un autre outil de sauvegarde trĂšs notable est dar, mais comme il dispose d'une liste d'options trĂšs vaste – la mĂ©thode de test ne couvre Ă  peine 10 % de ses capacitĂ©s – nous ne le testerons pas dans le cadre de ce cycle.

Résultats attendus

Étant donnĂ© que les deux candidats crĂ©ent des archives d'une maniĂšre ou d'une autre, on peut utiliser un tar ordinaire comme rĂ©fĂ©rence.

Nous évaluerons également dans quelle mesure le stockage des données sur le serveur de stockage est optimisé en créant des sauvegardes qui contiennent uniquement les différences entre une copie complÚte et l'état actuel des fichiers, ou entre les archives passées et actuelles (incrémentales, décimales, etc.).

Comportement lors de la création de sauvegardes :

  1. Un nombre relativement faible de fichiers sur le serveur de sauvegarde (comparable au nombre de sauvegardes ou à la taille des données en Go), mais leur taille est suffisamment grande (dizaines à centaines de mégaoctets).
  2. La taille du rĂ©fĂ©rentiel inclura uniquement les modifications – les doublons ne seront pas conservĂ©s, ainsi la taille du rĂ©fĂ©rentiel sera infĂ©rieure Ă  celle d'un logiciel basĂ© sur rsync.
  3. Une charge de travail importante sur le processeur est attendue lors de l'utilisation de la compression et/ou du chiffrement, ainsi qu'une charge réseau et de disque probablement assez élevée si le processus d'archivage et/ou de chiffrement s'exécute sur le serveur de sauvegarde.

En tant que valeur de référence, nous lancerons la commande suivante :

cd /src/dir; tar -cf - * | ssh backup_server "cat > /backup/dir/archive.tar"

Les résultats de l'exécution sont les suivants :

Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Le temps d'exécution est de 3m12s. On constate que la vitesse est limitée par le systÚme de disque du serveur de sauvegarde, comme dans l'exemple avec rsync. Juste un peu plus rapide, car l'écriture se fait dans un seul fichier.

Pour Ă©valuer Ă©galement la compression, nous lancerons la mĂȘme option, mais nous activerons la compression cĂŽtĂ© serveur de sauvegarde :

cd /src/dir; tar -cf - * | ssh backup_server "gzip > /backup/dir/archive.tgz"

Les résultats sont les suivants :

Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Le temps d'exécution est de 10m11s. Il est probable que le goulet d'étranglement soit le compresseur mono-thread cÎté réception.

La mĂȘme commande, mais avec le transfert de la compression vers le serveur contenant les donnĂ©es sources pour vĂ©rifier l'hypothĂšse selon laquelle le goulot d'Ă©tranglement est le compresseur mono-thread.

cd /src/dir; tar -czf - * | ssh backup_server "cat > /backup/dir/archive.tgz"

Voici ce que ça donne :

Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Le temps d'exĂ©cution Ă©tait de 9m37s. On peut clairement voir la charge d'un cƓur par le compresseur, car la vitesse de transmission sur le rĂ©seau et la charge sur le sous-systĂšme de disque source sont similaires.

Pour évaluer le chiffrement, vous pouvez utiliser openssl ou gpg, en ajoutant une commande supplémentaire openssl ou gpg dans le pipe. Pour référence, voici une commande :

cd /src/dir; tar -cf - * | ssh backup_server "gzip | openssl enc -e -aes256 -pass pass:somepassword -out /backup/dir/archive.tgz.enc"

Les résultats étaient les suivants :

Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Le temps d'exĂ©cution Ă©tait de 10m30s, car 2 processus Ă©taient lancĂ©s sur le cĂŽtĂ© rĂ©cepteur — le goulot d'Ă©tranglement Ă©tait encore le compresseur mono-thread, plus quelques frais gĂ©nĂ©raux sur le chiffrement.

Mise Ă  jour : À la demande de bliznezz, j'ajoute des tests avec pigz. Si l'on utilise seulement le compresseur, cela a pris 6m30s, et si on ajoute le chiffrement — environ 7m. L'Ă©chec sur le graphique infĂ©rieur — cache disque non vidĂ© :

Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Test de duplicity

Duplicity est un logiciel en python pour la sauvegarde en créant des archives chiffrées au format tar.

Pour les archives incrémentielles, librsync est utilisé, donc un comportement similaire à celui décrit dans la note précédente du cycle.

Les sauvegardes peuvent ĂȘtre chiffrĂ©es et signĂ©es Ă  l'aide de gnupg, ce qui est important lors de l'utilisation de diffĂ©rents fournisseurs pour le stockage des sauvegardes (s3, backblaze, gdrive, etc.)

Voyons quels seront les résultats :

Voici les résultats obtenus lors de l'exécution sans chiffrement

spoiler

Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Temps d'exécution de chaque lancement de test :

Lancement 1
Lancement 2
Lancement 3

16m33s
17m20s
16m30s

8m29s
9m3s
8m45s

5m21s
6m04s
5m53s

Voici les résultats lorsque le chiffrement gnupg est activé, avec une taille de clé de 2048 bits :

Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Temps d'exĂ©cution sur les mĂȘmes donnĂ©es, avec chiffrement :

Lancement 1
Lancement 2
Lancement 3

17m22s
17m32s
17m28s

8m52s
9m13s
9m3s

5m48s
5m40s
5m30s

La taille de bloc spĂ©cifiĂ©e Ă©tait de 512 mĂ©gaoctets, ce qui est clairement visible sur les graphiques ; la charge processeur Ă©tait en fait maintenue Ă  environ 50 %, donc le programme n'utilise pas plus d'un cƓur processeur.

Le principe de fonctionnement du programme est Ă©galement assez clair : on prend un morceau de donnĂ©es, on le compresse, on l'envoie au serveur de stockage des sauvegardes, qui peut ĂȘtre plutĂŽt lent.
Une autre caractéristique est le temps d'exécution prévisible du programme, qui dépend uniquement de la taille des données modifiées.

L'activation du chiffrement n'a pas particuliĂšrement augmentĂ© le temps d'exĂ©cution du programme, mais a augmentĂ© la charge processeur d'environ 10 %, ce qui peut ĂȘtre un bon bonus.

Malheureusement, ce programme n'a pas pu détecter correctement la situation liée au renommage du répertoire, et la taille résultante du dépÎt était égale à la taille des modifications (c'est-à-dire 18 Go), mais la possibilité d'utiliser un serveur non fiable pour les sauvegardes compense clairement ce comportement.

Test de duplicati

Ce logiciel est écrit en C#, et il s'exécute en utilisant un ensemble de bibliothÚques de Mono. Il dispose d'une interface graphique, ainsi que d'une version CLI.

La liste approximative des principales fonctionnalités est proche de celle de duplicity, incluant divers fournisseurs de stockage pour les sauvegardes, cependant, contrairement à duplicity, la plupart des fonctionnalités sont disponibles sans outils tiers. Que cela soit un avantage ou un inconvénient dépend du contexte spécifique, mais pour les débutants, il est probablement plus simple d'avoir sous les yeux une liste de toutes les fonctionnalités plutÎt que d'installer des paquets pour Python, comme dans le cas de duplicity.

Un petit détail supplémentaire : le programme écrit activement une base de données locale SQLite au nom de l'utilisateur qui lance la sauvegarde, il est donc nécessaire de faire attention à indiquer correctement la base appropriée à chaque lancement du processus en utilisant la CLI. Lors de l'utilisation via GUI ou WEBGUI, les détails seront cachés à l'utilisateur.

Examinons les indicateurs que cette solution peut fournir :

Si l'on désactive le chiffrement (ce que le WEBGUI ne recommande pas), les résultats sont les suivants :

Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Temps d'exécution :

Lancement 1
Lancement 2
Lancement 3

20m43s
20m13s
20m28s

5m21s
5m40s
5m35s

7m36s
7m54s
7m49s

Avec le chiffrement activé, utilisant aes, cela donne :

Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Temps d'exécution :

Lancement 1
Lancement 2
Lancement 3

29m9s
30m1s
29m54s

5m29s
6m2s
5m54s

8m44s
9m12s
9m1s

Et si l'on utilise le programme externe gnupg, les résultats sont les suivants :

Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati

Lancement 1
Lancement 2
Lancement 3

26m6s
26m35s
26m17s

5m20s
5m48s
5m40s

8m12s
8m42s
8m15s

Comme on peut le voir, le programme peut fonctionner en plusieurs fils d'exécution, mais cela ne le rend pas plus performant, et si l'on compare le travail de chiffrement, le lancement du programme externe
s'est avĂ©rĂ© plus rapide que l'utilisation de la bibliothĂšque du package Mono. Cela peut ĂȘtre dĂ» au fait que le programme externe est mieux optimisĂ©.

Un aspect positif est Ă©galement le fait que la taille du rĂ©fĂ©rentiel correspond exactement Ă  la quantitĂ© rĂ©elle de donnĂ©es modifiĂ©es, c'est-Ă -dire que duplicati a dĂ©tectĂ© le renommage du rĂ©pertoire et a correctement traitĂ© cette situation. Cela peut ĂȘtre constatĂ© lors de l'exĂ©cution du second test.

Dans l'ensemble, des impressions globalement positives sur le programme, y compris une bonne convivialité pour les débutants.

Résultats

Les deux candidats ont travaillé assez lentement, mais en comparaison avec le tar classique, il y a un progrÚs, au moins pour duplicati. Le prix de ce progrÚs est également clair : une charge notable.
du processeur. Dans l'ensemble, il n'y a pas de déviations particuliÚres dans la prévision des résultats.

Conclusions

Si l'on n'est pas pressĂ© et qu'il y a une marge de processeur, n'importe quelle solution examinĂ©e conviendra, en tout cas un travail considĂ©rable a Ă©tĂ© rĂ©alisĂ©, qu'il ne vaut pas la peine de rĂ©pĂ©ter en Ă©crivant des scripts d'enveloppement au-dessus de tar. La prĂ©sence de chiffrement est une caractĂ©ristique trĂšs nĂ©cessaire si le serveur de stockage des sauvegardes ne peut pas ĂȘtre entiĂšrement fiable.

Si l'on compare avec des solutions basĂ©es sur rsync — les performances peuvent ĂȘtre infĂ©rieures de plusieurs fois, mĂȘme si, en version pure, tar a fonctionnĂ© plus rapidement que rsync de 20 Ă  30%.
Il y a des économies sur la taille du référentiel, mais seulement avec duplicati.

Annonce

Sauvegarde, partie 1 : Pourquoi faire des sauvegardes, aperçu des méthodes et technologies
Sauvegarde, partie 2 : Revue et test des outils de sauvegarde basés sur rsync
Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati, deja dup
Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup
Sauvegarde, partie 5 : Test de bacula et veeam backup for linux
Sauvegarde, partie 6 : Comparaison des outils de sauvegarde
Sauvegarde, partie 7 : Conclusions

Auteur de la publication : Pavel Demkovich

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster