#!/usr/bin/env bash # Script assumes backup dir structure of: # $backup_path # |- daily # |- weekly # |- $date # Hardcoded rentention values: 7 days (1 week) for daily db backups, 28 days (~1 month) for full weekly backups mw_path='/var/mediawiki' backup_path='/var/backup' weekly_db='waapt_wiki' weekly_tarball='wikidata' daily_backup() { cd $mw_path php maintenance/sqlite.php --backup-to $backup_path/daily/$(date -I).sqlite find $backup_path/daily -mtime 7 -type f -delete } weekly_backup() { daily_backup mkdir $backup_path/weekly/$(date -I) cd $mw_path tar zcvhf $backup_path/weekly/$(date -I)/$weekly_tarball.tgz ./mediawiki cp $backup_path/daily/$(date -I).sqlite $backup_path/weekly/$weekly_db.sqlite cd $backup_path/weekly find . -mtime 28 -type d -delete } case $1 in daily) daily_backup ;; weekly) weekly_backup ;; *) ;; esac