Backup pentru un blog Ghost
După ce am instalat un blog bazat pe Ghost, următorul pas este să configurăm o modalitate de backup periodic.
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
Pentru a putea rula cele de mai jos vom avea nevoie de Python3 instalat, un tutorial simplu aici
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.
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
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.