
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:
- 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).
- Repo suurus sisaldab ainult muudatusi â dubleerimist ei salvestata, seega on repo suurus vĂ€iksem kui rsynci pĂ”hjal töötava tarkvara puhul.
- 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:
Teostusaeg 3m12s. On nĂ€ha, et kiirus on saanud piiranguks varundusserveri kettasĂŒsteem, nagu ka nĂ€ites . 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:
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:
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:
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:
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 .
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
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:
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:
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:
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:
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 â 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 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
