Maërlyn

FTP-only backup

2012. 08. 30.

A közelmúltban szükségem volt egy olyan backup megoldásra, ami akkor is működik, ha a tárhelyre csak ftp elérésem van - a phpmyadmin is csak a szolgáltató saját adminfelületén keresztül érhető el.

A háttér az, hogy jóatyám céges joomlás oldalát felnyomták. Mivel nem saját kód, nem volt verziózva. A szolgáltató backupolt, de ez nem letölthető, hogy összehasonlítsd korábbi változattal, hanem vissza lehet állni rá.

Páróra játék eredménye ez a két script.

A megoldás egy php és egy bash scriptből áll. A php maga mellé egy file-ba menti a teljes DB dumpot, a felhasznált függvény David Walsh blogjáról való. Ez a mappa .htaccess-el védve van, csak jelszó ismeretében érhető el (tudom, hogy nem az igazi, de nem találtam jobb megoldást). Cirka egymegás dumpot csinál egy másodpercen belül.

A lényegi munkát a shellscript végzi. A környezet: a mappa, amiben dolgozik, egyaránt egy checkoutolt git repo, valamint a teljes ftp tartalmat letöltő wget parancs kimenete. A lépések:

  1. a .git-en kívül minden törlése
  2. adatbázis backup triggerelése
  3. teljes ftp tartalom mentése
  4. ha az előbbi meghiúsult, értesítő levél és kilépés
  5. ha nem változott semmi file, kilépés
  6. minden változás commitolása, pusholása
  7. értesítő levél

A központi szerver egy saját hostolású GitLab, így weben keresztül is vissza lehet nézni, mikor mi változott. Gittel természetesen az adott időpontra visszaállás is könnyen megoldható.