{"id":86904,"date":"2020-07-01T07:42:30","date_gmt":"2020-07-01T05:42:30","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/kak-gitlab-pomogaet-delat-bekapy-bolshih-hranilishh-nextcloud"},"modified":"2020-07-01T07:42:30","modified_gmt":"2020-07-01T05:42:30","slug":"kak-gitlab-pomogaet-delat-bekapy-bolshih-hranilishh-nextcloud","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/kak-gitlab-pomogaet-delat-bekapy-bolshih-hranilishh-nextcloud","title":{"rendered":"Kako GitLab poma\u017ee u izradi rezervnih kopija velikih spremi\u0161ta NextCloud","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bok, Habr!<\/p>\n<p><\/p>\n<p>Danas \u017eelim govoriti o na\u0161em iskustvu automatizacije sigurnosnog kopiranja velikih podataka iz Nextcloud skladi\u0161ta u razli\u010ditim konfiguracijama. Radim kao CTO u \"Molina AK\", gdje se bavimo konfiguracijsko upravljanje IT sustava, a za pohranu podataka koristimo Nextcloud. Uklju\u010duju\u0107i i distribuiranu strukturu sa rezervnim kopijama.<\/p>\n<p><\/p>\n<p>Problemi koji proizlaze iz specifi\u010dnosti instalacija su da podataka ima puno. Verzija koju nudi Nextcloud, rezervisanje, subjektivni razlozi i drugo stvaraju mnogo dupliciranja.<\/p>\n<p><\/p>\n<h2 id=\"predystoriya\">Povijest<\/h2>\n<p><\/p>\n<p>Pri administraciji Nextclouda, o\u0161tro se postavlja problem organizacije u\u010dinkovitog backupa koji je obavezno potrebno \u0161ifrirati, jer su podaci dragocjeni.<\/p>\n<p><\/p>\n<p>Nudimo opcije pohrane backup-a kod nas ili kod klijenta na njegovim odvojenim ma\u0161inama od Nextclouda, \u0161to zahtijeva fleksibilan automatizirani pristup administraciji.<\/p>\n<p><\/p>\n<p>Ima puno klijenata, svi oni imaju razli\u010dite konfiguracije, i svi su na svojim platformama i sa svojim osobitostima. Tu standardna metoda kada cijela platforma pripada vama i backupi se rade iz crona nije primjenjiva.<\/p>\n<p><\/p>\n<p>Za po\u010detak pogledajmo ulazne podatke. Potrebno nam je:<\/p>\n<p><\/p>\n<ul>\n<li>Skalabilnost u smislu jedne ili vi\u0161e nodova. Za velike instalacije koristimo minio kao skladi\u0161te.<\/li>\n<li>Biti obavije\u0161ten o problemima s izvr\u0161enjem backupa.<\/li>\n<li>Backup treba pohranjivati kod klijenata i\/ili kod nas.<\/li>\n<li>Brzo i lako rje\u0161avanje problema.<\/li>\n<li>Klijenti i instalacije se zna\u010dajno razlikuju jedni od drugih \u2014 ujedna\u010denost je te\u0161ko posti\u0107i.<\/li>\n<li>Brzina oporavka treba biti minimalna prema dva scenarija: potpuno obnavljanje (katastrofa), jedan folder \u2014 slu\u010dajno izbrisan.<\/li>\n<li>Funkcija deduplifikacije je obavezna.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Kako GitLab poma\u017ee u izradi rezervnih kopija velikih spremi\u0161ta NextCloud\" src=\"\/wp-content\/uploads\/2020\/07\/1a0048e3295fef94ddca28e50612e3cb.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Za rje\u0161avanje zadatka upravljanja backup-ima integrirali smo GitLab. Vi\u0161e informacija u nastavku. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Naravno, nismo prvi koji rje\u0161avaju sli\u010dan problem, ali nam se \u010dini da na\u0161e prakti\u010dno iskustvo mo\u017ee biti zanimljivo i spremni smo ga podijeliti.<\/p>\n<p><\/p>\n<p>Budu\u0107i da je u na\u0161oj tvrtki usvojena politika otvorenog koda, rje\u0161enje smo tra\u017eili isklju\u010divo s otvorenim izvorom. S druge strane, dijelimo svoje razvojne projekte i objavljujemo ih. Na primjer, na GitHub-u postoji <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/molnia-com\/nextcloud-safe-trash\">na\u0161 plugin za Nextcloud<\/a><\/noindex>, koji postavljamo klijentima, poja\u010davaju\u0107i sigurnost podataka u slu\u010daju slu\u010dajnog ili namjernog brisanja.<\/p>\n<p><\/p>\n<h2 id=\"sredstva-bekapirovaniya\">Alati za backupiranje<\/h2>\n<p><\/p>\n<p>Potraga za rje\u0161enjima zapo\u010dela je odabir alata za izradu sigurnosnih kopija.<\/p>\n<p><\/p>\n<p>Obi\u010dni tar + gzip slabo rade \u2014 podaci se dupliciraju. Inkremenat \u010desto sadr\u017ei vrlo malo promjena i velika ve\u0107ina podataka unutar jednog datoteke se ponavlja.<br \/>\nPostoji jo\u0161 jedan problem \u2014 vi\u0161ak podataka u distribuiranom skladi\u0161tu podataka. Koristimo minio i njegovi podaci u su\u0161tini su vi\u0161ak. Ili se backup trebao raditi preko samog minio \u2014 optere\u0107ivati ga i koristiti sve posrednike izme\u0111u datote\u010dnog sustava, a \u0161to je jednako va\u017eno, postoji rizik da zaboravimo dio bunara i meta-informacija. Ili treba koristiti deduplifikaciju.<\/p>\n<p><\/p>\n<p>Postoje alati za izradu sigurnosnih kopija s deduplifikacijom u otvorenom kodu (na Habr\u00e9 su <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/449282\/\">\u010dlanaka<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/420055\/\">bili na ovu temu<\/a><\/noindex>) i na\u0161i finalisti su bili <noindex><a rel=\"nofollow\" href=\"https:\/\/borgbackup.readthedocs.io\/en\/stable\/\">Borg<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/restic.net\/\">Restic<\/a><\/noindex>. O na\u0161em uspore\u0111ivanju dvaju aplikacija dolje, a sada \u0107emo re\u0107i kako smo organizirali cijelu shemu.<\/p>\n<p><\/p>\n<h2 id=\"upravlenie-sozdaniem-rezervnyh-kopiy\">Upravljanje izradom sigurnosnih kopija<\/h2>\n<p><\/p>\n<p>Borg i Restic su dobri, ali nijedan od tih proizvoda nema centralizirani mehanizam upravljanja. Za svrhe upravljanja i kontrole odabrali smo alat koji imamo implementiran, bez kojeg ne mo\u017eemo zamisliti svoj rad, uklju\u010duju\u0107i automatizaciju \u2014 to je poznati CI\/CD \u2013 GitLab.<\/p>\n<p><\/p>\n<p>Ideja je sljede\u0107a: na svaku \u010dvoru koja pohranjuje podatke Nextcloud postaviti gitlab-runner. Runner pokre\u0107e skriptu prema rasporedu koja prati proces izrade sigurnosne kopije, a ta pokre\u0107e Borg ili Restic.<\/p>\n<p><\/p>\n<p>\u0160to smo dobili? Povratnu informaciju o izvr\u0161enju, jednostavnu kontrolu nad promjenama, detalje u slu\u010daju gre\u0161ke.<\/p>\n<p><\/p>\n<p>Evo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/molnia-com\/backup-by-runner\">ovdje na GitHubu<\/a><\/noindex> objavili smo primjere skripti za razli\u010dite zadatke, a na kraju smo ga priklju\u010dili na backup ne samo Nextcloud-a, ve\u0107 i mnogih drugih servisa. Tamo je i planifikator, ako ne \u017eelite ru\u010dno ga postavljati (a nama se ne da) i .gitlab-ci.yml<\/p>\n<p><\/p>\n<p>U API-ju GitLaba trenutno nema mogu\u0107nosti za promjenu tajmauta CI\/CD, a on je tamo mali. Treba ga pove\u0107ati, recimo do <code>1d<\/code>.<\/p>\n<p><\/p>\n<p>GitLab sre\u0107om mo\u017ee raditi ne samo na temelju commit-a, ve\u0107 i prema rasporedu, to\u010dno ono \u0161to nam treba.<\/p>\n<p><\/p>\n<p>Sada o skripti-omota\u010du.<\/p>\n<p><\/p>\n<p>Postavili smo sljede\u0107e uvjete za ovu skriptu:<\/p>\n<p><\/p>\n<ul>\n<li>Mora se pokretati kao runner i ru\u010dno iz konzole s istom funkcionalno\u0161\u0107u.<\/li>\n<li>Obavezno moraju biti obradnici gre\u0161aka:<\/li>\n<li>return code.<\/li>\n<li>pretra\u017eivanje linije u logu. Na primjer, za nas gre\u0161ka mo\u017ee biti poruka koju program ne smatra fatalnom.<\/li>\n<li>Obrada timeout-a. Vrijeme izvo\u0111enja mora biti razmjerno.<\/li>\n<li>Trebamo detaljan zapis. Ali samo u slu\u010daju gre\u0161ke.<\/li>\n<li>Tako\u0111er se provodi niz testova prije po\u010detka.<\/li>\n<li>Male pogodnosti za udobnost koje smo otkrili korisnima tijekom podr\u0161ke:<\/li>\n<li>Pokretanje i zavr\u0161etak bilje\u017ei se u sistemskom logu lokalnog ra\u010dunala. To poma\u017ee u povezivanju sistemskih gre\u0161aka i rada rezervne kopije.<\/li>\n<li>Dio loga gre\u0161aka, kada ih ima, ispisuje se na stdout, cijeli log se pi\u0161e u poseban fajl. Prakti\u010dno je odmah pogledati u CI i procijeniti gre\u0161ku ako je trivijalna.<\/li>\n<li>Na\u010dini za debagiranje.<\/li>\n<\/ul>\n<p><\/p>\n<p>Potpuni log \u010duva se kao artefakt u GitLabu, ako nema gre\u0161aka, log se bri\u0161e. Skriptu pi\u0161emo na bashu.<\/p>\n<p><\/p>\n<p>Svaka sugestija i primjedba o open sourceu bit \u0107e dobrodo\u0161la \u2014 welcome.<\/p>\n<p><\/p>\n<h2 id=\"kak-eto-rabotaet\">Kako to funkcionira<\/h2>\n<p><\/p>\n<p>Na nodu koja se pravi rezervna kopija pokre\u0107e se runner s bash executorom. U scheduleru u posebnom repozitoriju pokre\u0107e se CI\/CD job. Runner pokre\u0107e skriptu univerzalnu omotnicu za takve zadatke, u njoj se provode provjere valjanosti repozitorija rezervne kopije, to\u010daka montiranja i svega \u0161to \u017eelimo, zatim se obavlja rezervna kopija i \u010di\u0161\u0107enje starog. Sama gotova rezervna kopija \u0161alje se na S3.<\/p>\n<p><\/p>\n<p>Radimo prema ovoj shemi \u2014 to je vanjski pru\u017eatelj AWS ili ruski analog (br\u017ee je i podaci ne napu\u0161taju Rusiju). Ili klijentu postavljamo poseban minio klaster na njegovoj lokaciji za ove svrhe. To obi\u010dno radimo iz sigurnosnih razloga, kada klijent ne \u017eeli da podaci napuste njihov kontur.<\/p>\n<p><\/p>\n<p>Nismo koristili opciju slanja rezervne kopije putem ssh. Time se ne pove\u0107ava sigurnost, a mre\u017ene mogu\u0107nosti pru\u017eatelja S3 su mnogo ve\u0107e od jedne na\u0161e ssh ma\u0161ine.<\/p>\n<p><\/p>\n<p>Da bismo se za\u0161titili od hakera na lokalnom ra\u010dunalu \u2014 jer on mo\u017ee obrisati podatke na S3, obavezno je uklju\u010diti verzioniranje.<br \/>\nrezervna kopija uvijek \u0161ifrira rezervnu kopiju.<\/p>\n<p><\/p>\n<p>Borg ima na\u010din bez \u0161ifriranja <code>none<\/code>, ali ga kategori\u010dki ne preporu\u010dujemo uklju\u010divati. U ovom na\u010dinu ne samo da ne\u0107e biti \u0161ifriranja, ve\u0107 se ne izra\u010dunava kontrolna suma onoga \u0161to se zapisuje, tak\u017ee se cjelovitost mo\u017ee provjeriti samo neizravno, prema indeksima.<\/p>\n<p><\/p>\n<p>Prema posebnom rasporedu provodi se provjera rezervnih kopija na cjelovitost indeksa i sadr\u017eaja. Provjera se odvija sporo i dugo, zbog \u010dega je pokre\u0107emo odvojeno jednom mjese\u010dno. Mo\u017ee trajati nekoliko dana.<\/p>\n<p><\/p>\n<h2 id=\"ridmi-na-russkom\">Readme na ruskom<\/h2>\n<p><\/p>\n<h3 id=\"osnovnye-funkcii\">Glavne funkcije<\/h3>\n<p><\/p>\n<ul>\n<li><code>prepare<\/code> priprema<\/li>\n<li><code>testcheck<\/code> provjera spremnosti<\/li>\n<li><code>maincommand<\/code> glavna komanda<\/li>\n<li><code>forcepostscript<\/code> funkcija koja se izvr\u0161ava na kraju ili u slu\u010daju gre\u0161ke. Koristimo je da odmontiramo particiju.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"service-functions\">Funkcije usluge<\/h3>\n<p><\/p>\n<ul>\n<li><code>cleanup<\/code> zapisujemo gre\u0161ke ili bri\u0161emo log datoteku.<\/li>\n<li><code>checklog<\/code> parsiramo log za prisutnost gre\u0161aka.<\/li>\n<li><code>ret<\/code> izlazni handler.<\/li>\n<li><code>checktimeout<\/code> provera vremenskog ograni\u010denja.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"environment\">Okru\u017eenje<\/h3>\n<p><\/p>\n<ul>\n<li><code>VERBOSE=1<\/code> prikazujemo gre\u0161ke odmah na ekranu (stdout).<\/li>\n<li><code>SAVELOGSONSUCCES=1<\/code> \u010duvamo log u slu\u010daju uspeha.<\/li>\n<li><code>INIT_REPO_IF_NOT_EXIST=1<\/code> Kreiramo repozitorijum ako ne postoji. Po defaultu je isklju\u010deno.<\/li>\n<li><code>TIMEOUT<\/code> maksimalno vrijeme za glavnu operaciju. Mo\u017eete ga postaviti kao &#8216;m&#8217;, &#8216;h&#8217; ili &#8216;d&#8217; na kraju.<\/li>\n<\/ul>\n<p><\/p>\n<p>Re\u017eim \u010duvanja starih kopija. Po defaultu:<\/p>\n<p><\/p>\n<ul>\n<li><code>KEEP_DAILY=7<\/code><\/li>\n<li><code>KEEP_WEEKLY=4<\/code><\/li>\n<li><code>KEEP_MONTHLY=6<\/code><\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"peremennye-vnutri-skripta\">Varijable unutar skripta<\/h2>\n<p><\/p>\n<ul>\n<li><code>ERROR_STRING<\/code> \u2014 string za provere u logu zbog gre\u0161ke.<\/li>\n<li><code>EXTRACT_ERROR_STRING<\/code> \u2014 izraz za prikaz stringa ukoliko do\u0111e do gre\u0161ke.<\/li>\n<li><code>KILL_TIMEOUT_SIGNAL<\/code> \u2014 signal za prekidanje ako do\u0111e do prekora\u010denja vremenskog ograni\u010denja.<\/li>\n<li><code>TAIL<\/code> \u2014 koliko stringova sa gre\u0161kama na ekranu.<\/li>\n<li><code>COLORMSG<\/code> \u2014 boja poruke (podrazumevano \u017euta).<\/li>\n<\/ul>\n<p><\/p>\n<p>Skripta nazvana wordpress je uslovno naziva, njena karakteristika je da tako\u0111e pravi backup MySQL baze. To zna\u010di da se mo\u017ee koristiti za jednokratne instalacije Nextcloud, gde mo\u017eete tako\u0111e backupovati bazu. Povoljnost nije samo u tome \u0161to je sve na jednom mestu, ve\u0107 i \u0161to je sadr\u017eaj baze blizu sadr\u017eaju datoteka, jer je razlika u vremenu minimalna.<\/p>\n<p><\/p>\n<h2 id=\"restic-vs-borg\">Restic vs Borg<\/h2>\n<p><\/p>\n<p>Pore\u0111enja Borg-a i Restic-a uklju\u010duju <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/454734\/\">ovde na Habr-u<\/a><\/noindex>, i nismo imali zadatak da napravimo samo jo\u0161 jedno, ve\u0107 sopstveno. Bilo nam je va\u017eno kako \u0107e izgledati na na\u0161im podacima, sa na\u0161om specifi\u010dno\u0161\u0107u. Uklju\u010dujemo ih.<\/p>\n<p><\/p>\n<p>Na\u0161i kriterijumi izbora, osim ve\u0107 pomenutih (dedupikacija, brzo obnavljanje itd.):<\/p>\n<p><\/p>\n<ul>\n<li>Otpornost na nedovr\u0161eni rad. Provera na kill -9.<\/li>\n<li>Velicina na disku.<\/li>\n<li>Zahtjevi prema resursima (CPU, memorija).<\/li>\n<li>Veli\u010dina \u010duvanih blob-ova.<\/li>\n<li>Rad sa S3.<\/li>\n<li>Provera integriteta.<\/li>\n<\/ul>\n<p><\/p>\n<p>Za testiranje smo uzeli jednog klijenta sa stvarnim podacima i ukupnom veli\u010dinom od 1,6TB.<br \/>\nUslovi.<\/p>\n<p><\/p>\n<p>Borg ne zna direktno raditi sa S3, i montirali smo kao fuse disk, preko <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kahing\/goofys\">goofys<\/a><\/noindex>. Restic je slao u S3 sam.<\/p>\n<p><\/p>\n<p>Goofys radi veoma brzo i dobro, i postoji <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kahing\/catfs\">modul za disk caching<\/a><\/noindex>, \u0161to dodatno ubrzava rad. Nalazi se u beta fazi, i moram priznati da nam je padao sa gubitkom podataka na testovima (drugim). Ali pogodnost je u tome \u0161to sama procedura backupovanja ne zahteva puno \u010ditanja, ve\u0107 pre svega pisanje, tako da ke\u0161 koristimo samo prilikom provere integriteta.<\/p>\n<p><\/p>\n<p>Da bismo smanjili uticaj mre\u017ee, koristili smo lokalnog provajdera \u2014 Yandex Cloud.<\/p>\n<p><\/p>\n<p>Rezultati testiranja pore\u0111enja.<\/p>\n<p><\/p>\n<ul>\n<li>Kill -9 s daljnjim ponovnim pokretanjem, oboje je uspje\u0161no pro\u0161lo.<\/li>\n<li>Veli\u010dina na disku. Borg mo\u017ee komprimirati, stoga su o\u010dekivani rezultati.<\/li>\n<\/ul>\n<p><\/p>\n<p>Backuper<br \/>\nVeli\u010dina<\/p>\n<p>Borg<br \/>\n562Gb<\/p>\n<p>Restic<br \/>\n628Gb<\/p>\n<p><\/p>\n<ul>\n<li>Prema CPU-u<br \/>\nSam borg tro\u0161i malo, s zadanim komprimiranim, ali treba procijeniti zajedno s procesom goofys. Zajedno su uporedivi i tro\u0161e oko 1,2 jezgre na istoj testnoj virtualnoj ma\u0161ini.<\/li>\n<li>Memorija. Restic pribli\u017eno 0,5Gb, Borg oko 200Mb. No, to su sve neznatni tro\u0161kovi u usporedbi s datote\u010dnim predmemorijom sustava. Stoga je po\u017eeljno dodijeliti vi\u0161e memorije.<\/li>\n<li>Razlika u veli\u010dinama blobova pokazala se drasti\u010dnom.<\/li>\n<\/ul>\n<p><\/p>\n<p>Backuper<br \/>\nVeli\u010dina<\/p>\n<p>Borg<br \/>\noko 500Mb<\/p>\n<p>Restic<br \/>\noko 5Mb<\/p>\n<p><\/p>\n<ul>\n<li>Rad s S3 od Restica je odli\u010dan. Rad Borga putem goofys ne izaziva pitanja, ali je primje\u0107eno da je po\u017eeljno nakon zavr\u0161etka sigurnosne kopije izvr\u0161iti umount kako bi se u potpunosti resetirala predmemorija. Karakteristika rada S3 je da nedopunjeni dijelovi nikada ne\u0107e biti poslani u bazi, a to zna\u010di da nepotpuno u\u010ditani podaci dovode do velikih o\u0161te\u0107enja.<\/li>\n<li>Provjera cjelovitosti dobro funkcionira u oba slu\u010daja, ali brzina se zna\u010dajno razlikuje.<br \/>\nRestic \u2013 <strong>3,5 sata<\/strong>.<br \/>\nBorg, s datote\u010dnom predmemorijom od 100Gb SSD \u2013 <strong>5 sati<\/strong>. Otprilike isti rezultat brzine ako su podaci na lokalnom disku.<br \/>\nBorg \u010dita direktno s S3 bez predmemorije <strong>33 sata<\/strong>. Ogromno dugo.<\/li>\n<\/ul>\n<p><\/p>\n<p>U su\u0161tini, Borg mo\u017ee komprimirati i ima ve\u0107e blobove \u2014 \u0161to \u010dini skladi\u0161tenje i GET\/PUT operacije u S3 jeftinijima. No, to dolazi s kompliciranijom i sporijom provjerom. \u0160to se ti\u010de brzine oporavka \u2014 nismo primijetili razliku. Kasnije sigurnosne kopije (nakon prve) restic radi malo du\u017ee, ali ne zna\u010dajno.<\/p>\n<p><\/p>\n<p>Dimenzija zajednice tako\u0111er nije bila bez zna\u010daja u izboru.<\/p>\n<p><\/p>\n<p>I odabrali smo borg.<\/p>\n<p><\/p>\n<h2 id=\"paru-slov-o-szhatii\">Par rije\u010di o kompresiji<\/h2>\n<p><\/p>\n<p>Borg ima u svom arsenalu odli\u010dan novi algoritam kompresije \u2014 zstd. Po kvaliteti kompresije nije lo\u0161iji od gzip-a, ali je zna\u010dajno br\u017ei. I usporediv po brzini s zadanim lz4.<\/p>\n<p><\/p>\n<p>Na primjer, dump MySQL baze komprimira se otprilike dvostruko bolje od lz4 pri istoj brzini. Ipak, iskustvo s stvarnim podacima pokazuje vrlo malu razliku u stupnju kompresije \u010dvora Nextcloud.<\/p>\n<p><\/p>\n<p>U Borgu postoji prili\u010dno bonus na\u010din kompresije \u2014 ako datoteka ima visoku entropiju, tada se kompresija uop\u0107e ne primjenjuje, \u0161to pove\u0107ava brzinu rada. Uklju\u010duje se opcijom prilikom stvaranja<br \/>\n<code>-C auto,zstd<\/code><br \/>\nza algoritam zstd<br \/>\nTako da s ovom opcijom u usporedbi s zadanom kompresijom, dobili smo<br \/>\n560Gb i 562Gb, redom. Podatke iz gornjeg primjera, podsje\u0107am, bez kompresije rezultat je 628Gb. Rezultat od 2Gb razlike nas je prili\u010dno iznenadio, no odlu\u010dili smo se ipak odabrati. <code>auto,zstd<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"metodika-proverki-bekapa\">Metodologija provjere sigurnosne kopije<\/h2>\n<p><\/p>\n<p>Prema rasporedu, virtualna ma\u0161ina se pokre\u0107e izravno kod pru\u017eatelja ili kod klijenta, \u0161to zna\u010dajno smanjuje mre\u017eno optere\u0107enje. U svakom slu\u010daju, to je jeftinije nego podizati kod sebe i prenositi promet.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">goofys --cache &quot;--free:5%:&#x2F;mnt&#x2F;cache&quot; -o allow_other --endpoint https&#x3A;&#x2F;&#x2F;storage.yandexcloud.net --file-mode=0666 --dir-mode=0777 xxxxxxx.com &#x2F;mnt&#x2F;goofys\nexport BORG_PASSCOMMAND=&quot;cat &#x2F;home&#x2F;borg&#x2F;.borg-passphrase&quot;\nborg list &#x2F;mnt&#x2F;goofys&#x2F;borg1&#x2F;\nborg check --debug -p --verify-data &#x2F;mnt&#x2F;goofys&#x2F;borg1&#x2F;<\/code><\/pre>\n<p><\/p>\n<p>Na isti na\u010din provjeravamo datoteke antivirusom (naknadno). Naime, korisnici u\u010ditavaju razne stvari u Nextcloud i ne posjeduju svi antivirus. Izvo\u0111enje provjere u trenutku u\u010ditavanja preuzima previ\u0161e vremena i ometa poslovanje.<\/p>\n<p><\/p>\n<p>Skalabilnost se posti\u017ee pokretanjem runnera na razli\u010ditim \u010dvorovima s razli\u010ditim oznakama.<br \/>\nU na\u0161em monitoring sustavu prikupljamo status sigurnosnih kopija putem API-ja GitLab-a u jednom prozoru, a po potrebi je lako primijetiti probleme, a tako ih je lako i lokalizirati.<\/p>\n<p><\/p>\n<h2 id=\"zaklyuchenie\">Zaklju\u010dak<\/h2>\n<p><\/p>\n<p>Kao rezultat, to\u010dno znamo da radimo sigurnosne kopije, da su na\u0161e sigurnosne kopije valjane, a problemi koji se s njima javljaju zahtijevaju malo vremena i rje\u0161avaju se na razini de\u017eurnog administratora. Sigurnosne kopije zapravo zauzimaju malo prostora u usporedbi s tar.gz ili Bacula.<\/p>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/508758\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u044b\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 Nextcloud \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445. \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u0421\u0422\u041e \u0432 \u00ab\u041c\u043e\u043b\u043d\u0438\u044f \u0410\u041a\u00bb, \u0433\u0434\u0435 \u043c\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u043c\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c IT \u0441\u0438\u0441\u0442\u0435\u043c, \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f Nextcloud. \u0412 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435, \u0441 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043e\u0439, \u0441 \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u044b\u0442\u0435\u043a\u0430\u044e\u0449\u0438\u0435 \u0438\u0437 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0438\u043d\u0441\u0442\u0430\u043b\u043b\u044f\u0446\u0438\u0439 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043d\u043e\u0433\u043e. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":86905,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-86904","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u044b\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 Nextcloud \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/kak-gitlab-pomogaet-delat-bekapy-bolshih-hranilishh-nextcloud\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a GitLab \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0431\u044d\u043a\u0430\u043f\u044b \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 NextCloud | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u044b\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 Nextcloud \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/kak-gitlab-pomogaet-delat-bekapy-bolshih-hranilishh-nextcloud\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-07-01T05:42:30+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-01T05:42:30+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Kako GitLab poma\u017ee u izradi sigurnosnih kopija velikih skladi\u0161ta NextCloud | ProHoster","description":"Pozdrav, Habr! Danas \u017eelim govoriti o na\u0161em iskustvu automatizacije sigurnosnog kopiranja velikih podataka u skladi\u0161tima Nextcloud u razli\u010ditim konfiguracijama.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/kak-gitlab-pomogaet-delat-bekapy-bolshih-hranilishh-nextcloud","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a GitLab \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u0431\u044d\u043a\u0430\u043f\u044b \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 NextCloud | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0445\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043e \u043d\u0430\u0448\u0435\u043c \u043e\u043f\u044b\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 Nextcloud \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445.","og:url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/kak-gitlab-pomogaet-delat-bekapy-bolshih-hranilishh-nextcloud","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-07-01T05:42:30+00:00","article:modified_time":"2020-07-01T05:42:30+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"86904","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 14:03:54","updated":"2022-10-06 09:05:46","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/86904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=86904"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/86904\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/86905"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=86904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=86904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=86904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}