După ce am instalat un blog bazat pe Ghost, următorul pas este să configurăm o modalitate de backup periodic.

Deși există o multitudine de posibilități, de ex pe Hetzner poți realiza backup zilnic al întregului VPS cu un cost de 20% din costul lunar al acestuia, am ales să utilizez un script simplu și eficient. Acesta rulează în Python, realizează un backup complet al bazei de date și, dacă se dorește, al imaginilor și a temelor vizuale, iar pentru stocarea backupurilor se utilizează Google Drive.

Înainte de a începe avem nevoie de informațiile bazei de date MySQL pe care blogul nostru Ghost o utilizează. Informațiile sunt disponibile în fișierul config.production.json din folderul în care este instalat Ghost, în cazul meu /var/www/ghost Descarcă acest fișier și copiază informațiile local.

Înainte de a începe ne vom asigură că fusul orar pe server este setat conform locației noastre, scriptul realizând backup-ul în fiecare zi la miezul nopții

sudo dpkg-reconfigure tzdata

Din ecranul interactiv selectează Europe și apoi Bucharest și salvează. Vom restarta serviciul cron pentru a ne asigura că modificarea a fost cu succes.

sudo service cron restart

Vom clona scriptul din Github și vom crea folderul în care se vor salva fișierele de backup

git clone https://github.com/vicke4/ghost-backup && cd ghost-backup

Apoi vom rula scriptul

python3 setup.py

Setupul este destul de intuitiv, va trebui să alegi dacă dorești backup inclusiv pentru imagini și teme vizuale, să introduci datele de autentificare ale bazei de date MySQL și apoi să vizitezi un link pentru a obține cheia de autorizare pentru Google Drive. Pentru a selecta link-ul de autorizare nu folosi tastatura, in PuTTy apeși click stânga, tragi pentru a selecta și eliberezi mouse-ul atunci când ai terminat, apoi faci paste în browserul tău preferat.

Procesul de configurare al scriptului

Dacă dorești există și posibilitatea de a fi informat prin Telegram despre statusul backup-urilor, dar în mod normal nu este necesar. Dacă totul a funcționat corect atunci ar trebui ca în Google Drive să ai un folder numit Ghost Backup ce conține un fișier tar.gz

Backup-ul initial

Pentru a ne asigura că totul funcționează corect înainte de rularea cron-ului la miezul nopții rulează

python3 /opt/ghost-backup/backup.py

Dacă nu întâmpini nicio eroare, excelent! În caz contrar verifică secțiunea de troubleshooting a scriptului

Poți verifica cronjob-urile care sunt setate a rula pe server și intervalul acestora

crontab -l

Rezultatul ar trebui să fie similar cu cel de mai jos

49 0 * * * "/etc/letsencrypt"/acme.sh --cron --home "/etc/letsencrypt" > /dev/null
@daily  python3 /opt/ghost-backup/backup.py > /opt/ghost-backup/backup.log 2>&1 # Ghost blog daily backup

Dacă dorești să schimbi ora la care se rulează script-ul de backup - @daily pornește scriptul în primul minut al fiecărei zi, atunci rulează

crontab -e

selectează editorul cu care ești cel mai confortabil, nano este cel recomandat, modifică - mai multe detalii despre cron syntax și salvează cu CTRL + X și apoi Y.

Fișierul de backup va fi în format tar.gz și va avea o denumire de genul eugenpaunro-20200202.tar.gz adică numeaplicație-anlunăzi. Dacă rulezi manual comanda de backup sau vei seta cron-ul mai des de o dată pe zi, vei observa că există mai multe versiuni ale aceluiași fișier cu timestamp orar.