
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 :
- 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).
- 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.
- 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 :
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 . 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 :
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 :
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 :
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Ă© :
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 .
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
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 :
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 :
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 :
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 :
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 â 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 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
