Owncloud-Backup

Um mich frei von Drittanbietern wie Dropbox zu bewegen, habe ich mir eine Owncloud-Instanz auf meinem Server installiert. Da ich aber nicht der einzige Benutzer dieses Dienstes bin, muss ich für ein regelmäßiges Backup sorgen, falls – wie auch immer – Dateien bei Upgrades oder einfach nur aus Versehen gelöscht werden.

Dazu habe ich mir ein kleines Skript geschrieben, was nichts anderes tut, als den Owncloud-Ordner und die Datenbank zu sichern. Für das Skript ist es wichtig, dass – in diesem Fall – das MySQL-Passwort angegeben werden muss.Deshalb sollte man zusehen, dass das Skript an einem Ort liegt, der nur für root lesbar ist. Falls dann jemand von außerhalb in der Lage ist, an diese Datei zu kommen, hat man ohnehin völlig andere Probleme, als ein MySQL-Passwort der Owncloud-Instanz.
Ein guter Ort für das Skript wäre zum Beispiel unter /root/bin/.

mkdir -p /root/bin

Das Skript backup_owncloud.sh sieht dann folgendermaßen aus:

#!/bin/bash
#
# This script is used to backup the owncloud instance
#

OWNCLOUDDIR=/path/to/owncloud/
BACKUPDIR=/path/to/backups/owncloud
CURRDATE=`date +%Y-%m-%d`
CURRENTBACKUPDIR=${BACKUPDIR}/owncloud_${CURRDATE}
OWNCLOUDUSER=INSERTMYSQLDBUSER
OWNCLOUDDB=INSERTMYSQLDB
OWNCLOUDPASS=INSERTMYSQLPASSWORD

mkdir -p ${CURRENTBACKUPDIR}
chown -R root:root ${BACKUPDIR}
chmod -R 600 ${BACKUPDIR}

cd ${OWNCLOUDDIR}
tar czpf ${CURRENTBACKUPDIR}/owncloud.tgz *
mysqldump –lock-tables -u ${OWNCLOUDUSER} –password=${OWNCLOUDPASS} ${OWNCLOUDDB} > ${CURRENTBACKUPDIR}/owncloud.sql

Anschließend die entsprechenden Berechtigungen setzen:

chown -R root:root /root/bin/
chmod 750 /root/bin/backup_owncloud.sh

Das ganze kann man dann als täglichen Cronjob laufen lassen und vorallem auch alte, nicht mehr benötigte, Backups im gleichen Zug löschen:

0 0     * * *   root /root/bin/backup_owncloud.sh && find /path/to/backups/owncloud/ -type d -iname owncloud_* -mtime +30 -exec rm -rf {} \;

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.