{"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\/it\/blog\/administrirovanie\/kak-gitlab-pomogaet-delat-bekapy-bolshih-hranilishh-nextcloud","title":{"rendered":"Come GitLab aiuta a eseguire backup di grandi archivi NextCloud","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ciao, Habr!<\/p>\n<p><\/p>\n<p>Oggi vorrei condividere la nostra esperienza nella automazione del backup di grandi volumi di dati archiviati in Nextcloud in diverse configurazioni. Lavoro come CTO presso 'Molniya AK', dove ci occupiamo di gestione della configurazione dei sistemi IT, utilizzando Nextcloud per lo storage dei dati, compresa una struttura distribuita con backup.<\/p>\n<p><\/p>\n<p>Le problematiche derivanti dalle peculiarit\u00e0 delle installazioni sono dovute all'abbondanza dei dati. La versioning offerta da Nextcloud, il backup, le ragioni soggettive e altro ancora creano molte duplicazioni.<\/p>\n<p><\/p>\n<h2 id=\"predystoriya\">Contesto<\/h2>\n<p><\/p>\n<p>Nell'amministrazione di Nextcloud, si presenta acutamente il problema di organizzare backup efficaci che devono essere necessariamente crittografati, poich\u00e9 i dati hanno un grande valore.<\/p>\n<p><\/p>\n<p>Offriamo opzioni di archiviazione dei backup sia presso di noi che presso il cliente su macchine separate da Nextcloud, il che richiede un approccio automatizzato e flessibile all'amministrazione.<\/p>\n<p><\/p>\n<p>Ci sono molti clienti, ognuno con configurazioni diverse, tutti nelle proprie sedi e con le proprie peculiarit\u00e0. Qui la metodologia standard, in cui l'intero ambiente appartiene a te e i backup sono eseguiti tramite cron, si adatta male.<\/p>\n<p><\/p>\n<p>Innanzitutto, diamo un'occhiata ai dati di input. Abbiamo bisogno di:<\/p>\n<p><\/p>\n<ul>\n<li>Scalabilit\u00e0 in termini di un nodo o pi\u00f9. Per grandi installazioni utilizziamo minio come storage.<\/li>\n<li>Essere informati sui problemi durante l'esecuzione del backup.<\/li>\n<li>\u00c8 necessario conservare il backup presso i clienti e\/o presso di noi.<\/li>\n<li>Essere in grado di risolvere rapidamente e facilmente i problemi.<\/li>\n<li>I clienti e le installazioni differiscono notevolmente l'uno dall'altro \u2014 non riusciamo a ottenere uniformit\u00e0.<\/li>\n<li>La velocit\u00e0 di ripristino deve essere minima in due scenari: ripristino completo (disastro), una cartella \u2014 cancellata per errore.<\/li>\n<li>\u00c8 fondamentale avere la funzione di deduplicazione.<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Come GitLab aiuta a eseguire backup di grandi archivi NextCloud\" src=\"\/wp-content\/uploads\/2020\/07\/1a0048e3295fef94ddca28e50612e3cb.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Per affrontare la gestione dei backup, abbiamo integrato GitLab. Maggiori dettagli nella sezione successiva. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Sicuramente non siamo i primi a risolvere un compito del genere, ma riteniamo che la nostra esperienza pratico-testata possa essere interessante e siamo pronti a condividerla.<\/p>\n<p><\/p>\n<p>Poich\u00e9 nella nostra azienda \u00e8 adottata una politica di open source, abbiamo cercato una soluzione con codice sorgente aperto. A nostra volta, condividiamo i nostri progetti e li pubblichiamo. Ad esempio, su GitHub c'\u00e8 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/molnia-com\/nextcloud-safe-trash\">il nostro plugin per Nextcloud<\/a><\/noindex>, che forniamo ai clienti, potenziando la protezione dei dati in caso di eliminazione accidentale o volontaria.<\/p>\n<p><\/p>\n<h2 id=\"sredstva-bekapirovaniya\">Strumenti di backup<\/h2>\n<p><\/p>\n<p>La ricerca di soluzioni \u00e8 iniziata con la scelta di uno strumento per la creazione del backup.<\/p>\n<p><\/p>\n<p>Il classico tar + gzip funziona male: i dati sono duplicati. L'incremento contiene spesso pochissime modifiche e gran parte dei dati all'interno di un file si ripete.<br \/>\nC'\u00e8 anche un altro problema: la ridondanza dello storage distribuito. Utilizziamo MinIO e i suoi dati sono in genere ridondanti. O avremmo dovuto effettuare il backup direttamente tramite MinIO \u2013 sovraccaricandolo e utilizzando tutti gli strati tra il file system, con il rischio non trascurabile di dimenticare parte dei bucket e delle informazioni sui metadati. Oppure utilizzare la deduplicazione.<\/p>\n<p><\/p>\n<p>Esistono strumenti di backup con deduplicazione nel mondo open source (ne abbiamo parlato su Habr) <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/449282\/\">articolo<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/420055\/\">in questo contesto<\/a><\/noindex>) e i nostri finalisti sono stati <noindex><a rel=\"nofollow\" href=\"https:\/\/borgbackup.readthedocs.io\/en\/stable\/\">Borg<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/restic.net\/\">Restic<\/a><\/noindex>. Di seguito la nostra comparazione tra le due applicazioni, ma prima parleremo di come abbiamo organizzato l'intero schema.<\/p>\n<p><\/p>\n<h2 id=\"upravlenie-sozdaniem-rezervnyh-kopiy\">Gestione della creazione di backup<\/h2>\n<p><\/p>\n<p>Borg e Restic sono buoni, ma nessuno dei due prodotti ha un meccanismo di gestione centralizzato. Per gestire e controllare, abbiamo scelto uno strumento che abbiamo gi\u00e0 implementato, senza il quale non concepiamo il nostro lavoro, compresa l'automazione: il celebre CI\/CD \u2013 GitLab.<\/p>\n<p><\/p>\n<p>L'idea \u00e8 la seguente: su ogni nodo che memorizza dati Nextcloud viene installato gitlab-runner. Il runner esegue secondo un programma uno script che monitora il processo di backup, avviando Borg o Restic.<\/p>\n<p><\/p>\n<p>Cosa abbiamo ottenuto? Feedback sull'esecuzione, controllo conveniente delle modifiche, dettagli in caso di errore.<\/p>\n<p><\/p>\n<p>Ecco <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/molnia-com\/backup-by-runner\">qui su GitHub<\/a><\/noindex> abbiamo pubblicato esempi di script per diverse attivit\u00e0, e alla fine l'abbiamo integrato nel backup non solo di Nextcloud, ma anche di molti altri servizi. L\u00ec si trova anche il pianificatore, se non vuoi configurarlo manualmente (e noi non vogliamo) e .gitlab-ci.yml<\/p>\n<p><\/p>\n<p>Nell'API di GitLab attualmente non \u00e8 possibile modificare il timeout di CI\/CD, che \u00e8 piuttosto breve. Deve essere aumentato, ad esempio a <code>1d<\/code>.<\/p>\n<p><\/p>\n<p>Fortunatamente, GitLab pu\u00f2 essere avviato non solo tramite commit, ma anche secondo un programma, esattamente ci\u00f2 di cui abbiamo bisogno.<\/p>\n<p><\/p>\n<p>Ora riguardo allo script avvolgente.<\/p>\n<p><\/p>\n<p>Abbiamo stabilito queste condizioni per questo script:<\/p>\n<p><\/p>\n<ul>\n<li>Deve essere eseguito sia come runner che a mano dalla console con la stessa funzionalit\u00e0.<\/li>\n<li>Devono essere presenti gestori degli errori:<\/li>\n<li>codice di ritorno.<\/li>\n<li>ricerca di una stringa nel log. Ad esempio, per noi un errore pu\u00f2 essere un messaggio che il programma considera non fatale.<\/li>\n<li>Gestione del timeout. Il tempo di esecuzione deve essere ragionevole.<\/li>\n<li>Abbiamo bisogno di un log molto dettagliato. Ma solo in caso di errore.<\/li>\n<li>Viene inoltre eseguita una serie di test prima dell'inizio.<\/li>\n<li>Piccole funzionalit\u00e0 per la comodit\u00e0 che abbiamo trovato utili durante il supporto:<\/li>\n<li>L'avvio e la conclusione vengono registrati nel syslog della macchina locale. Questo aiuta a collegare gli errori di sistema e il funzionamento del backup.<\/li>\n<li>Parte del log degli errori, quando presente, viene emessa in stdout, l'intero log viene scritto in un file separato. \u00c8 comodo dare un'occhiata direttamente in CI e valutare l'errore se \u00e8 triviale.<\/li>\n<li>Modalit\u00e0 per il debug.<\/li>\n<\/ul>\n<p><\/p>\n<p>Il log completo \u00e8 conservato come artefatto in GitLab, se non ci sono errori il log viene eliminato. Scriviamo lo script in bash.<\/p>\n<p><\/p>\n<p>Accogliamo con favore qualsiasi suggerimento e osservazione sul software open source.<\/p>\n<p><\/p>\n<h2 id=\"kak-eto-rabotaet\">Come funziona<\/h2>\n<p><\/p>\n<p>Sulla node di backup viene avviato un runner con un esecutore bash. In base al pianificatore, viene avviato un job CI\/CD in un repository speciale. Il runner esegue uno script wrapper universale per tali attivit\u00e0, in cui vengono effettuati controlli di validit\u00e0 del repository di backup, dei punti di montaggio e di tutto ci\u00f2 che vogliamo, quindi viene eseguito il backup e la pulizia di quello vecchio. Il backup finale viene inviato su S3.<\/p>\n<p><\/p>\n<p>Operiamo secondo questo schema: un provider esterno come AWS o un analogo russo (questo \u00e8 pi\u00f9 veloce e i dati non escono dalla Russia). Oppure installiamo un cluster minio dedicato presso il cliente per questi scopi. Di solito procediamo in questo modo per motivi di sicurezza, quando il cliente non vuole assolutamente che i dati lascino il loro perimetro.<\/p>\n<p><\/p>\n<p>Non abbiamo utilizzato la funzionalit\u00e0 di invio del backup tramite ssh. Ci\u00f2 non aumenta la sicurezza e le capacit\u00e0 di rete del provider S3 sono nettamente superiori a quelle della nostra singola macchina ssh.<\/p>\n<p><\/p>\n<p>Per proteggere i dati da un hacker sulla macchina locale - potrebbe cancellare i dati su S3 - \u00e8 assolutamente necessario abilitare la versioning.<br \/>\nIl backup viene sempre cifrato.<\/p>\n<p><\/p>\n<p>Borg ha una modalit\u00e0 senza cifratura. <code>none<\/code>, ma sconsigliamo vivamente di attivarlo. In questo modo non ci sar\u00e0 solo mancanza di crittografia, ma non verr\u00e0 nemmeno calcolato il checksum di ci\u00f2 che viene registrato, il che significa che l'integrit\u00e0 pu\u00f2 essere verificata solo indirettamente, tramite gli indici.<\/p>\n<p><\/p>\n<p>Un controllo dei backup sull'integrit\u00e0 degli indici e del contenuto \u00e8 effettuato tramite uno scheduler separato. Il controllo avviene lentamente e richiede tempo, quindi lo eseguiamo separatamente una volta al mese. Pu\u00f2 richiedere diversi giorni.<\/p>\n<p><\/p>\n<h2 id=\"ridmi-na-russkom\">Readme in russo<\/h2>\n<p><\/p>\n<h3 id=\"osnovnye-funkcii\">Funzioni principali<\/h3>\n<p><\/p>\n<ul>\n<li><code>prepare<\/code> preparazione<\/li>\n<li><code>testcheck<\/code> verifica di prontezza<\/li>\n<li><code>maincommand<\/code> comando principale<\/li>\n<li><code>forcepostscript<\/code> funzione eseguita alla fine o in caso di errore. Utilizziamo per smontare la partizione.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"service-functions\">Funzioni di servizio<\/h3>\n<p><\/p>\n<ul>\n<li><code>cleanup<\/code> registriamo errori o cancelliamo il file di log.<\/li>\n<li><code>checklog<\/code> analizziamo il log per la presenza di una stringa di errore.<\/li>\n<li><code>ret<\/code> gestore di uscita.<\/li>\n<li><code>checktimeout<\/code> controllo del timeout.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"environment\">Ambiente<\/h3>\n<p><\/p>\n<ul>\n<li><code>VERBOSE=1<\/code> mostriamo gli errori a video immediatamente (stdout).<\/li>\n<li><code>SAVELOGSONSUCCES=1<\/code> salviamo il log in caso di successo.<\/li>\n<li><code>INIT_REPO_IF_NOT_EXIST=1<\/code> Creiamo il repository, se non esiste. Di default \u00e8 disattivato.<\/li>\n<li><code>TIMEOUT<\/code> tempo massimo per l'operazione principale. Puoi impostarlo come &#8216;m&#8217;, &#8216;h&#8217; o &#8216;d&#8217; alla fine.<\/li>\n<\/ul>\n<p><\/p>\n<p>Modalit\u00e0 di conservazione delle vecchie copie. Di default:<\/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\">Variabili all'interno dello script<\/h2>\n<p><\/p>\n<ul>\n<li><code>ERROR_STRING<\/code> \u2014 string per il controllo nel log per errori.<\/li>\n<li><code>EXTRACT_ERROR_STRING<\/code> \u2014 espressione per mostrare la stringa in caso di errore.<\/li>\n<li><code>KILL_TIMEOUT_SIGNAL<\/code> \u2014 segnale per terminare in caso di timeout.<\/li>\n<li><code>TAIL<\/code> \u2014 numero di stringhe con errori visualizzate sullo schermo.<\/li>\n<li><code>COLORMSG<\/code> \u2014 colore del messaggio (giallo per impostazione predefinita).<\/li>\n<\/ul>\n<p><\/p>\n<p>Lo script chiamato WordPress \u00e8 condizionatamente nominato tale; la sua caratteristica \u00e8 che esegue anche il backup del database MySQL. Ci\u00f2 significa che pu\u00f2 essere utilizzato per installazioni monocomponenti di Nextcloud, dove \u00e8 possibile effettuare anche il backup del database. Il vantaggio sta non solo nel fatto che tutto \u00e8 in un unico posto, ma anche che il contenuto del database \u00e8 vicino al contenuto dei file, con una differenza di tempo minima.<\/p>\n<p><\/p>\n<h2 id=\"restic-vs-borg\">Restic vs Borg<\/h2>\n<p><\/p>\n<p>Le comparazioni tra Borg e Restic sono disponibili anche <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/454734\/\">qui su Habr<\/a><\/noindex>, e non avevamo l'obiettivo di creare semplicemente un altro confronto, ma il nostro. Ci interessava vedere come apparisse sui nostri dati, con la nostra specificit\u00e0. Li confrontiamo.<\/p>\n<p><\/p>\n<p>I nostri criteri di selezione, oltre a quelli gi\u00e0 menzionati (deduplicazione, ripristino veloce, ecc.):<\/p>\n<p><\/p>\n<ul>\n<li>Resilienza a operazioni incomplete. Controllo su kill -9.<\/li>\n<li>Dimensione su disco.<\/li>\n<li>Richiesta di risorse (CPU, memoria).<\/li>\n<li>Dimensione dei blob memorizzati.<\/li>\n<li>Compatibilit\u00e0 con S3.<\/li>\n<li>Controllo dell'integrit\u00e0.<\/li>\n<\/ul>\n<p><\/p>\n<p>Per il test abbiamo scelto un cliente con dati reali e una dimensione totale di 1,6 TB.<br \/>\nCondizioni.<\/p>\n<p><\/p>\n<p>Borg non pu\u00f2 lavorare direttamente con S3, quindi abbiamo montato come disco fuse, tramite <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kahing\/goofys\">goofys<\/a><\/noindex>. Restic inviava a S3 direttamente.<\/p>\n<p><\/p>\n<p>Goofys funziona molto velocemente e bene, e ha a disposizione <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kahing\/catfs\">un modulo di cache su disco<\/a><\/noindex>, il che accelera ulteriormente le prestazioni. Si trova in fase beta e, ammettiamolo, \u00e8 capitato che fallisse con perdita di dati nei test (altri test). Ma la comodit\u00e0 \u00e8 che la procedura di backup non richiede molta lettura, ma principalmente scrittura, quindi utilizziamo la cache solo durante il controllo dell'integrit\u00e0.<\/p>\n<p><\/p>\n<p>Per ridurre l'impatto della rete, abbiamo usato un provider locale \u2014 Yandex Cloud.<\/p>\n<p><\/p>\n<p>Risultati dei test di confronto.<\/p>\n<p><\/p>\n<ul>\n<li>Kill -9 con un successivo riavvio, entrambi sono andati a buon fine.<\/li>\n<li>Dimensione su disco. Borg pu\u00f2 comprimere, quindi i risultati sono previsti.<\/li>\n<\/ul>\n<p><\/p>\n<p>Backuper<br \/>\nDimension<\/p>\n<p>Borg<br \/>\n562Gb<\/p>\n<p>Restic<br \/>\n628Gb<\/p>\n<p><\/p>\n<ul>\n<li>Per CPU<br \/>\nDi per s\u00e9, borg consuma poco, con compressione predefinita, ma va valutato insieme al processo goofys. In totale, sono comparabili e utilizzano circa 1,2 core su una stessa virtual machine di test.<\/li>\n<li>Memoria. Restic circa 0,5Gb, Borg circa 200Mb. Ma tutto ci\u00f2 \u00e8 trascurabile rispetto alla cache di file del sistema. Quindi \u00e8 preferibile allocare pi\u00f9 memoria.<\/li>\n<li>La differenza nelle dimensioni dei blob si \u00e8 rivelata sorprendente.<\/li>\n<\/ul>\n<p><\/p>\n<p>Backuper<br \/>\nDimension<\/p>\n<p>Borg<br \/>\ncirca 500Mb<\/p>\n<p>Restic<br \/>\ncirca 5Mb<\/p>\n<p><\/p>\n<ul>\n<li>Il lavoro con S3 di Restic \u00e8 eccellente. Il funzionamento di Borg tramite goofys non presenta problemi, ma \u00e8 stato notato che \u00e8 preferibile fare umount alla fine del backup per azzerare completamente la cache. Una caratteristica del funzionamento di S3 \u00e8 che i chunk non completamente scaricati non verranno mai inviati nel bucket, il che significa che dati non completamente caricati possono portare a gravi danni.<\/li>\n<li>Il controllo dell'integrit\u00e0 funziona bene in entrambi i casi, ma la velocit\u00e0 differisce significativamente.<br \/>\nRestic \u2013 <strong>3,5 ore<\/strong>.<br \/>\nBorg, con una cache file di 100GB SSD \u2013 <strong>5 ore<\/strong>. Un risultato simile in termini di velocit\u00e0 se i dati sono memorizzati su un disco locale.<br \/>\nBorg legge direttamente da S3 senza cache <strong>33 ore<\/strong>. Incredibilmente lungo.<\/li>\n<\/ul>\n<p><\/p>\n<p>In sintesi, Borg \u00e8 in grado di comprimere e ha blob pi\u00f9 grandi\u2014il che rende pi\u00f9 economico lo storage e le operazioni GET\/PUT in S3. Tuttavia, si deve pagare con un controllo pi\u00f9 complesso e lento. Per quanto riguarda la velocit\u00e0 di ripristino\u2014non abbiamo notato differenze. I backup successivi (dopo il primo) restic richiede un po' pi\u00f9 di tempo, ma non in modo significativo.<\/p>\n<p><\/p>\n<p>Non da ultimo, la dimensione della community ha avuto un peso nella scelta.<\/p>\n<p><\/p>\n<p>E abbiamo scelto Borg.<\/p>\n<p><\/p>\n<h2 id=\"paru-slov-o-szhatii\">Due parole sulla compressione<\/h2>\n<p><\/p>\n<p>Borg ha un eccellente nuovo algoritmo di compressione nel suo arsenale: zstd. La qualit\u00e0 della compressione \u00e8 pari a gzip, ma \u00e8 significativamente pi\u00f9 veloce. \u00c8 comparabile in velocit\u00e0 con il predefinito lz4.<\/p>\n<p><\/p>\n<p>Ad esempio, un dump di un database MySQL si comprime due volte meglio di lz4 alla stessa velocit\u00e0. Tuttavia, l'esperienza con dati reali mostra una differenza molto piccola nel livello di compressione per i nodi di Nextcloud.<\/p>\n<p><\/p>\n<p>In Borg c'\u00e8 una modalit\u00e0 bonus di compressione: se un file ha alta entropia, la compressione non viene applicata affatto, il che aumenta la velocit\u00e0 di esecuzione. Si attiva tramite un'opzione durante la creazione.<br \/>\n<code>-C auto,zstd<\/code><br \/>\nper l'algoritmo zstd.<br \/>\nCon questa opzione, rispetto alla compressione predefinita, abbiamo ottenuto<br \/>\n560Gb e 562Gb rispettivamente. I dati dell'esempio sopra, ricordo, senza compressione risultano 628Gb. Il risultato di 2Gb di differenza ci ha sorpreso un po', ma abbiamo deciso di scegliere comunque <code>auto,zstd<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"metodika-proverki-bekapa\">Metodologia di verifica del backup.<\/h2>\n<p><\/p>\n<p>Attraverso il pianificatore, viene avviata una macchina virtuale direttamente dal fornitore o dal cliente, il che riduce notevolmente il carico di rete. Almeno \u00e8 pi\u00f9 economico rispetto a farlo localmente e gestire il traffico.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">goofys --cache \"--free:5%:\/mnt\/cache\" -o allow_other --endpoint https:\/\/storage.yandexcloud.net --file-mode=0666 --dir-mode=0777 xxxxxxx.com \/mnt\/goofys\nexport BORG_PASSCOMMAND=\"cat \/home\/borg\/.borg-passphrase\"\nborg list \/mnt\/goofys\/borg1\/\nborg check --debug -p --verify-data \/mnt\/goofys\/borg1\/<\/code><\/pre>\n<p><\/p>\n<p>Allo stesso modo, controlliamo i file con l'antivirus (post-fatto). Gli utenti caricano vari file su Nextcloud e non tutti hanno un antivirus. Effettuare il controllo al momento del caricamento richiede troppo tempo e interferisce con le attivit\u00e0 aziendali.<\/p>\n<p><\/p>\n<p>La scalabilit\u00e0 si ottiene avviando runner su nodi diversi con tag diversi.<br \/>\nNel nostro monitoraggio vengono raccolti gli stati dei backup tramite API GitLab in un'unica finestra, e in caso di necessit\u00e0, i problemi possono essere facilmente individuati e localizzati.<\/p>\n<p><\/p>\n<h2 id=\"zaklyuchenie\">Conclusione<\/h2>\n<p><\/p>\n<p>Di conseguenza, sappiamo esattamente che stiamo effettuando backup, che i nostri backup sono validi, e i problemi che si presentano con essi richiedono poco tempo e vengono risolti a livello di amministratore di turno. I backup occupano realmente poco spazio rispetto a tar.gz o Bacula.<\/p>\n<p>Fonte: <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 4.9.10 - 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. \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.\" \/>\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\/it\/blog\/administrirovanie\/kak-gitlab-pomogaet-delat-bekapy-bolshih-hranilishh-nextcloud\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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. \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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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\udd47Come GitLab aiuta a effettuare i backup di grandi archivi NextCloud | ProHoster","description":"Ciao, Habr! Oggi voglio raccontarvi della nostra esperienza nell'automazione del backup di grandi archivi di dati su Nextcloud in diverse configurazioni. Sono CTO di \u00abMolniya AK\u00bb, dove ci occupiamo di gestione della configurazione dei sistemi IT, utilizzando Nextcloud per la memorizzazione dei dati. Questo include anche una struttura distribuita con ridondanza. Le problematiche derivano dalle caratteristiche delle installazioni, dato che i dati sono numerosi.","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/kak-gitlab-pomogaet-delat-bekapy-bolshih-hranilishh-nextcloud","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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. \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.","og:url":"https:\/\/prohoster.info\/it\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/86904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=86904"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/86904\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/86905"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=86904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=86904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=86904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}