Direkt zum Hauptinhalt

Backup

Dieses Skript sichert die Datenbank und alle Benutzerdateien. Siehe auch

https://www.bookstackapp.com/docs/admin/backup-restore

Skript

#!/bin/bash
#set -x
BACKUPDIR=/backup/bookstack
MYSQL_DB=bookstack
WWW_DIR=/var/www/bookstack
ITEMS=".env public/uploads/ storage/uploads/ themes/"

MINFILESIZE=200 # in kb
KEEP=28 # in days
EMAIL="[Absender]"

DATE=$(date "+%Y-%m-%dT%H%M%S%z")
FILENAME=${BACKUPDIR}/$MYSQL_DB-$DATE.sql

mysqldump --triggers --routines $MYSQL_DB -r $FILENAME
DB_DUMPSIZE=$(du -k $FILENAME|cut -f1)
if [[ -r $FILENAME && $DB_DUMPSIZE -ge $MINFILESIZE ]]
then
  xz -9e --lzma2=dict=1024MiB,nice=273 $FILENAME
else
  echo -e "Host:\t\t\t$(hostname -f)\nDB:\t\t\t$MYSQL_DB\nDatei:\t\t\t$FILENAME\nGröße (min):\t\t$MINFILESIZE kb\nGröße (tatsächlich):\t$DB_DUMPSIZE kb"|mailx -s "Backup gescheitert: $MYSQL_DB" $EMAIL
fi

FILENAME_ARCHIVE=${BACKUPDIR}/$(basename $WWW_DIR)-$DATE.tar.xz
tar --exclude=storage/framework -cf $FILENAME_ARCHIVE --use-compress-program='xz -9 --lzma2=dict=1024MiB,nice=273' -C /${WWW_DIR} $ITEMS

find $BACKUPDIR/* -type f -mtime +$KEEP -exec rm {} \; 2>&1

Cronjob

15 3 * * 2-6 /usr/local/bin/bs-backup-db.sh