Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

Selles mÀrkuses vaadeldakse varundustööriistu, mis teostavad varundamist, luues arhiive reservserverisse.

Nendest, mis vastavad nÔuetele, on duplicity (millel on meeldiv liides deja dup kujul) ja duplicati.

Veel ĂŒks tĂ€helepanuvÀÀrne varundustööriist on dar, kuid kuna sellel on vĂ€ga ulatuslik valik valikuid — testimismeetod katab vaevalt 10% sellest, milleks ta vĂ”imeline on, — ei teste me seda kĂ€esoleva tsĂŒkli raames.

Oodatavad tulemused

Kuna mÔlemad kandidaadid loovad arhiive, saab orientiirina kasutada tavalist tar-i.

Lisaks hindame, kui hÀsti optimeeritakse andmete salvestamist salvestusserveris, luues varukoopiaid, mis sisaldavad ainult erinevusi tÀieliku koopia ja failide praeguse seisundi vahel vÔi eelmiste ja praeguste arhiivide vahel (inkrementaalsed, dekrementaalsed jne).

Varundamise kÀitumine:

  1. Suhteliselt vĂ€ike arv faile varundusserveris ( vĂ”rreldes varukoopiate arvu vĂ”i andmete suurusega gb-des), kuid nende suurus on piisavalt suur (kĂŒmmekond-sada megabaiti).
  2. Repo suurus sisaldab ainult muudatusi — dubleerimist ei salvestata, seega on repo suurus vĂ€iksem kui rsynci pĂ”hjal töötava tarkvara puhul.
  3. Oodatakse suurt protsessorikoormust, kui kasutusele vĂ”etakse pakkimine ja/vĂ”i krĂŒptimine, samuti tĂ”enĂ€oliselt mĂ€rkimisvÀÀrne koormus vĂ”rgu- ja ketaspetsialiseeritud sĂŒsteemile, kui arhiivimise ja/vĂ”i krĂŒptimise protsess töötab varundusserveris.

Viidatakse vÀÀrtusele, kÀivitame jÀrgmise kÀsu:

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

Teostuse tulemused on sellised:

Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

Teostusaeg 3m12s. On nĂ€ha, et kiirus on saanud piiranguks varundusserveri kettasĂŒsteem, nagu ka nĂ€ites rsync. Ainult natuke kiiremini, kuna kirjutamine toimub ĂŒhte faili.

Samuti hindamiseks kĂ€ivitame sama variandi, kuid lĂŒlitame sisse pakkimise varundusserveri poolel:

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

Tulemused on jÀrgmised:

Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

Teostusaeg 10m11s. TĂ”enĂ€oliselt on kitsaskohaks ĂŒhesuunaline kompressioon vastuvĂ”tupoolel.

Sama kĂ€sk, kuid koos andmete serverisse edastamisega, et kontrollida hĂŒpoteesi, et kitsaskohaks on ĂŒherealine kompressor.

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

Tulenes jÀrgmine tulemus:

Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

TĂ€itmise aeg oli 9m37s. Selgelt on nĂ€ha ĂŒhte tuuma koormust kompressorilt, kuna ĂŒlekanne vĂ”rgu kaudu ja koormus allika ketasĂŒsteemile on sarnased.

KrĂŒptimise hindamiseks vĂ”ib kasutada openssl vĂ”i gpg, ĂŒhendades tĂ€iendava kĂ€suga openssl vĂ”i gpg pipeline'is. Orientatsiooni saamiseks on jĂ€rgmine kĂ€sk:

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

Tulemused olid jÀrgmised:

Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

TĂ€itmise aeg tuli 10m30s, kuna vastuvĂ”tva poolel oli töötatud 2 protsessi — kitsaskohaks jĂ€i jĂ€lle ĂŒherealine kompressor, pluss vĂ€ikesed kulud krĂŒptimisele.

UPD: bliznezz'i palve peale lisan testid pigziga. Kui kasutada ainult kompressorit — tuli 6m30s, kui lisada veel ka krĂŒptimine — umbes 7m. Allolev langus graafikul — mitte tĂŒhistatud ketta vahemĂ€lu:

Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

Testimine duplicity

Duplicity on Pythonil pĂ”hinev tarkvara varundamiseks krĂŒpteeritud arhiivide loomise kaudu tar-formaadis.

Inkrementaalsete arhiivide puhul rakendatakse librsync'i, seega vĂ”ib oodata kĂ€itumist, mis on kirjeldatud eelnevas mĂ€rkuses tsĂŒklist.

Varukoopiad vĂ”ivad olla krĂŒpteeritud ja allkirjastatud gnupg abil, mis on oluline erinevate teenusepakkujate kasutamisel varundamise jaoks (s3, backblaze, gdrive jne).

Vaatame, millised on tulemused:

Sellised tulemused saadi kĂ€ivitamisel ilma krĂŒptimiseta

Spoiler

Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

Iga testkÀivituse tööaeg:

KĂ€ivitamine 1
KĂ€ivitamine 2
KĂ€ivitamine 3

16m33s
17m20s
16m30s

8m29s
9m3s
8m45s

5m21s
6m04s
5m53s

Siin on tulemused gnupg krĂŒptimisega, 2048 bitise vĂ”tmega:

Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

Tööaeg samadel andmetel krĂŒptimisega:

KĂ€ivitamine 1
KĂ€ivitamine 2
KĂ€ivitamine 3

17m22s
17m32s
17m28s

8m52s
9m13s
9m3s

5m48s
5m40s
5m30s

Bloki suurus oli mÀÀratud — 512 megabaiti, mida on graafikutelt selgelt nĂ€ha; protsessori koormus pĂŒsis tegelikult 50% tasemel, mis tĂ€hendab, et programm kasutab mitte rohkem kui ĂŒhte protsessorituuma.

Samuti on piisavalt hĂ€sti nĂ€ha programmi tööpĂ”himĂ”te: vĂ”eti andmete tĂŒkk, pressiti see kokku ning saadeti varundusserverisse, mis vĂ”ib olla piisavalt aeglane.
Veel another feature is the predictable runtime of the program, which depends only on the size of the changed data.

Enabling encryption didn't significantly increase the runtime of the program, but it raised CPU load by about 10%, which can be quite a nice bonus.

Unfortunately, this program was unable to correctly detect a directory rename situation, and the resulting repository size turned out to be equal to the size of the changes (i.e. all 18GB), but the ability to use an untrusted server for backups definitely outweighs such behavior.

Testing duplicati

This software is written in C#, and runs using a set of libraries from Mono. There is a GUI as well as a CLI version.

The approximate list of key features is similar to duplicity, including various providers for backup storage, however, unlike duplicity, most features are available without third-party tools. Whether this is a plus or minus depends on the specific case, but for beginners, it is likely easier to have an immediately visible list of all features, rather than having to install packages for Python like in the case with duplicity.

Another small nuance is that the program actively writes a local SQLite database on behalf of the user running the backup, so it is necessary to additionally ensure the correct specification of the required database with each CLI process execution. When using the GUI or WEBGUI, these details will be hidden from the user.

Let's look at what metrics this solution can provide:

If you turn off encryption (although WEBGUI does not recommend this), the results are as follows:

Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

Runtime:

KĂ€ivitamine 1
KĂ€ivitamine 2
KĂ€ivitamine 3

20m43s
20m13s
20m28s

5m21s
5m40s
5m35s

7m36s
7m54s
7m49s

With encryption enabled, using AES, the results are:

Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

Runtime:

KĂ€ivitamine 1
KĂ€ivitamine 2
KĂ€ivitamine 3

29m9s
30m1s
29m54s

5m29s
6m2s
5m54s

8m44s
9m12s
9m1s

And if you use the external program GnuPG, the results are as follows:

Varundamine, osa 3: Ülevaade ja testimine duplicity, duplicati

KĂ€ivitamine 1
KĂ€ivitamine 2
KĂ€ivitamine 3

26m6s
26m35s
26m17s

5m20s
5m48s
5m40s

8m12s
8m42s
8m15s

As can be seen, the program can work in multiple threads, but this does not make it a more efficient solution, and when comparing encryption performance - running an external program
turned out to be faster than using the library from the Mono set. This may be due to the fact that the external program is better optimized.

Meeldiv hetk oli ka see, et reposti suurus on tĂ€pselt nii suur, kui palju tĂ”eliselt muudetud andmeid on, st duplicati tuvastas katalooge ĂŒmbernimetamise ja töötles seda olukorda Ă”igesti. Seda vĂ”ib nĂ€ha teise testi kĂ€igus.

KokkuvĂ”ttes on programmist jÀÀnud ĂŒsna positiivne mulje, sealhulgas piisav sĂ”bralikkus algajatele.

tulemused nÀitasid ainult nelja ebaolulise koodibloki kattuvust, mis olid tingitud POSIX ja ANSI C nÔuetest.

MĂ”lemad kandidaadid töötasid piisavalt aeglaselt, kuid ĂŒldiselt on vĂ”rreldes tavalise tar-iga tĂ”husus paranenud, vĂ€hemalt duplicati puhul. Sellise edusammuga kaasnevat hinda on samuti lihtne mĂ”ista — mĂ€rgatav koormus
protsessorile. Üldiselt ei ole tulemuste prognoosimisel mingeid erilisi kĂ”rvalekaldeid.

JĂ€reldused

Kui kuhugi kiirustama ei pea ja protsessori koormus on piisav — sobib ĂŒkskĂ”ik milline arutatud lahendus, igal juhul on tehtud piisavalt suur töö, mida ei tasu kordamiseks tar-i kohaleste skriptide kirjutamisega. KrĂŒpteerimise olemasolu on vĂ€ga vajalik omadus, kui varukoopiate salvestamiseks mĂ”eldud server ei ole tĂ€ielikult usaldusvÀÀrne.

Kui vĂ”rrelda lahendusi, mis pĂ”hinevad rsync — jĂ”udlus vĂ”ib olla paar korda halvem, ehkki puhtal kujul töötas tar 20-30% kiiremini kui rsync.
Reposti suuruse kokkuhoid on olemas, kuid ainult duplicati puhul.

Teade

Varundamine, osa 1: Miks on varundamine vajalik, meetodite ja tehnoloogiate ĂŒlevaade
Varundamine, osa 2: rsync-pĂ”histe varundustööriistade ĂŒlevaade ja testimine
Varundamine, osa 3: Duplicity, duplicati, deja dup ĂŒlevaade ja testimine
Varundamine, osa 4: Zbackup, restic, borgbackup ĂŒlevaade ja testimine
Varundamine, osa 5: Bacula ja Veeam Backup for Linux testimine
Varundamine, osa 6: Varundamise tööriistade vÔrdlus
Varundamine, osa 7: JĂ€reldused

Artikli autor: Pavel Demkovich

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster