Carica backup su Dropbox con crontab e dropboxd

Dropbox ha un vantaggio: sincronizza un nuovo backup non appena questo appare nel sistema. L’accordo consiste nel spostare il nuovo backup nella cartella locale di Dropbox (con uno script cron fornito).

Prima di procedere devi sapere:

  1. Puoi usare Dropbox per archiviare file fino al limite consentito dal tuo piano.
  2. Puoi collegare fino a 3 dispositivi a Dropbox con il piano gratuito (per i dispositivi Android questo limite può essere aggirato, a proposito).
  3. Quando esegui Dropbox sul tuo server Linux, devi sincronizzare una sola cartella. Oppure, dato che Dropbox è una soluzione bidirezionale, potrebbe popolare il tuo server con tutti i dati dal cloud. Questo può consumare spazio sul server.
  4. Devi creare uno script rsync aggiuntivo per sincronizzare la cartella dei backup di Discourse con la cartella locale dei backup di Dropbox. Questo richiede doppio spazio per i backup. In passato Dropbox permetteva i collegamenti simbolici (symlink), ma attualmente questa funzione non è più disponibile.
  5. Per accedere ai tuoi backup non sono necessari privilegi di root, ma in questa guida eseguo il demone di Dropbox come root (probabilmente non sicuro, sei invitato a migliorare).

Innanzitutto devi configurare i backup in Discourse in /admin/site_settings/category/backups (i miei valori personalizzati tra parentesi)

numero massimo di backup (3) - questo gestisce quanti file verranno mantenuti su Dropbox
frequenza dei backup (1) - ogni giorno
orario del backup (3:30 UTC) - predefinito
livello di compressione gzip del backup (6) - scegli tra velocità di compressione (1) o dimensioni ridotte (9), ma nel caso di un VPS il tuo provider di hosting potrebbe riavviare il server in caso di prolungato alto utilizzo della CPU

In secondo luogo collega il tuo server a Dropbox con comandi shell (importante: poiché eseguo il servizio come root, in questa fase sono acceduto come root - quindi puoi provare con il tuo utente regolare):

cd ~ && wget -O - "https://www.dropbox.com/download?plat=lnx.x86_64" | tar xzf -
# verrà creata la directory .dropbox-dist
# avvia il demone di Dropbox
sh ~/.dropbox-dist/dropboxd

Quando usi Dropbox per la prima volta sul tuo server, vedrai un link web unico. Devi copiarlo e incollarlo nel browser web e seguire le istruzioni. Dopo di ciò, una directory Dropbox verrà creata nella tua home directory. Dropbox consiglia ufficialmente di scaricare lo script Python per gestire il tuo demone. Io non lo uso.

Comandi per gestire il demone:

dropbox status
dropbox start
dropbox stop
Verifica che lo script di avvio automatico sia stato creato (clicca per espandere il testo nascosto):
#cat /etc/systemd/system/dropbox.service

[Unit]
Description=Servizio Dropbox
After=network.target

[Service]
ExecStart=/bin/sh -c '/usr/local/bin/dropbox start'
ExecStop=/bin/sh -c '/usr/local/bin/dropbox stop'
PIDFile=/root/.dropbox/dropbox.pid
User=root
Group=root
Type=forking
Restart=on-failure
RestartSec=5
StartLimitInterval=60s
StartLimitBurst=3

[Install]
WantedBy=multi-user.target

Discourse fornisce file di backup e ne gestisce il numero e la frequenza.
Un task crontab rsync copia il nuovo backup nella cartella locale di Dropbox.
Successivamente, Dropbox carica il nuovo file sul cloud.
La notte successiva, quando Discourse rimuove il vecchio file di backup, rsync lo rimuove anche da Dropbox.

In terzo luogo crea la cartella di Dropbox per le copie di backup:

mkdir ~/Dropbox/backups

In quarto luogo prepara la cartella per la sincronizzazione inversa (escludi le cartelle non necessarie)
Ad esempio, la tua cartella Dropbox contiene sottocartelle e un file:

backups
books
stuff
logo.png

Devi escludere tutto tranne backups. In realtà, il comando aggiunge elementi all’elenco degli esclusi:

dropbox exclude add "Dropbox/books/"
dropbox exclude add "Dropbox/stuff/"
dropbox exclude add "Dropbox/logo.png"

Se per caso hai aggiunto backups all’elenco degli esclusi, puoi riportarlo alla sincronizzazione rimuovendo l’elemento dall’elenco:

dropbox exclude remove "Dropbox/backups/"

Lo stato corrente di un determinato backup può essere verificato con il comando:

dropbox filestatus Dropbox/backups/niti-2021-01-21-033726-v20201218000001.tar.gz

In quinto luogo prepara lo script per la sincronizzazione locale e la pulizia della cache /root/rsync.dropbox:

#!/bin/sh
rsync -avh --stats --progress --delete /var/discourse/shared/standalone/backups/default/ /root/Dropbox/backups/
rm -rf /root/Dropbox/.dropbox.cache/

In sesto luogo aggiungi il comando a crontab alle 8:00 ora locale: crontab -e

0 8 * * * /bin/bash /root/rsync.dropbox

C’è una finestra temporale tra le 3:00 UTC e le 8:00 ora locale: dovrebbe essere sufficiente per completare il backup prima che inizi la sincronizzazione con Dropbox.

P.S.
Non ho controllato questa configurazione da sei mesi o più. Ora ho notato che il comando dropbox status ha restituito:

Stai usando una vecchia versione di Dropbox. Aggiornala all'ultima versione per continuare a utilizzare Dropbox.

La sincronizzazione funziona ancora, quindi non la aggiornerò. L’ultima volta è stato perso il supporto per i collegamenti simbolici.

7 Mi Piace