Automatiseer je website backups

Backups zijn belangrijk.
En als je aan het ontwikkelen bent, wellicht voor meerdere klanten tegelijk, kan het tijdrovend werk zijn om telkens zowel de database als bestanden te backuppen.

Als je SSH toegang hebt is het vrij simpel dit proces te automatiseren.
Zorg voor onderstaande structuur:

de_root_directory_van_jouw_website/
 |
 + - backups/
     |
     + - backup.sh
     |
     + - files/

In het “backup.sh” bestand gaan we het volgende backup script plaatsen:

#!/bin/sh

THESITE="de_root_directory_van_jouw_website"
THEDB="databasenaam"
THEDBUSER="database_user"
THEDBPW="database_wachtwoord"
THEDATE=`date +%d%m%y%H%M`

mysqldump -u $THEDBUSER -p${THEDBPW} $THEDB | gzip > /srv/users/serverpilot/apps/$THESITE/backups/files/dbbackup_${THEDB}_${THEDATE}.bak.gz

tar czf /srv/users/serverpilot/apps/$THESITE/backups/files/sitebackup_${THESITE}_${THEDATE}.tar -C / srv/users/serverpilot/apps/$THESITE/public
gzip /srv/users/serverpilot/apps/$THESITE/backups/files/sitebackup_${THESITE}_${THEDATE}.tar

find /srv/users/serverpilot/apps/$THESITE/backups/files/site* -mtime +5 -exec rm {} \;
find /srv/users/serverpilot/apps/$THESITE/backups/files/db* -mtime +5 -exec rm {} \;

In bovenstaand script maak ik gebruik van ServerPilot waarbij de serverroot iets anders is dan gebruikelijk, namelijk “/srv/users/serverpilot/apps/”
In jouw geval kan dat bijvoorbeeld “/var/www/” zijn of “/var/www/vhosts/“.
De laatste twee regels van het script zijn overigens optioneel. Deze zorgen ervoor dat backups die ouder zijn dan 5 dagen automatisch verwijderd worden.

Als je het pad hebt aangepast voer je vervolgens de waarden in voor de eerste vier variabelen en het script is klaar.
Eerst dien je het nog even uitvoerbaar te maken via: chmod +x backup.sh
Als laatste voer je het uit via: sh ./backup.sh

Als alles goed is heb je nu in “backups/files” zowel een backup van je database als van je bestanden.
Binnenkort leg ik uit hoe je de backup volledig gescheduled kunt laten verlopen!

Scroll to top