[Owncloud] Backup Owncloud Data, Calendars, and Contacts

Bruno Flückiger bruno at bsdhowto.ch
Wed Jun 5 05:57:36 UTC 2013


On 05.06.2013 01:38, owncloud_mailing_list at status.e4ward.com wrote:
> Hello all.

Hi Kyle

> I've seen a few mentions of this here and there, but nothing very
> well documented and most of it pretty old.
> 
> I have a home server I've using to serve up owncloud (using mysql). I
> also have an external RAID storage device. I would like to
> periodically backup owncloud's data, calendars, and contacts for ALL
> users onto this external device. The data is easy since its held in a
> file structure, but what about calendars and contacts? How do I back
> them up and easily re-import them? The "Export this ownCloud instance"
> bit in the admin settings says it can export user data, database and
> system files. But how does this work, and does it also export
> calendars and contacts? How do I re-import them?

I use mysqldump in a script to make a daily backup of the owncloud 
database
and store it on my NAS device for backups. The script is scheduled via 
cron
to be execute each night. On the backup NAS I have a folder structure 
for
the dumps which keeps each dump for four weeks. Older dumps are 
automatically
removed by the script.

I can easily restore the content of the DB using phpMySQL which runs on 
the
same host as owncloud.

This is a prototype of my script:

#!/bin/sh

dbhost=mysql
dbuser=backup
dbpw=OhSoSecret
backup=/media/backup/$dbhost/week1
level=`date +%u`

mount | grep /media/backup > /dev/null

if [ $? -eq 0 ] ; then
         echo "Another backup is still in progress"
         exit 1
fi

mount -t nfs backup:/volume1/backup /media/backup

if [ $? -ne 0 ] ; then
         echo "Unable to mount backup share"
         exit 2
fi

if [ ! -d /media/backup/$dbhost ] ; then
         mkdir /media/backup/$dbhost
         if [ $? -ne 0 ] ; then
                 echo "Unable to create folder /media/backup/$dbhost"
                 umount /media/backup
                 exit 3
         fi
fi

if [ $level -eq 1 ] ; then
         for i in 4 3 2 1; do
                 if [ -d /media/backup/$dbhost/week$i ] ; then
                         j=$(($i+1))
                         mv /media/backup/$dbhost/week$i `
                            /media/backup/$dbhost/week$j
                 fi
         done
fi

if [ ! -d $backup ] ; then
         mkdir $backup
         if [ $? -ne 0 ] ; then
                 echo "Unable to create folder $backup"
                 umount /media/backup
                 exit 4
         fi
fi

/usr/local/bin/mysqldump --host=$dbhost `
                          --user=$dbuser `
                          --password=$dbpw `
                          owncloud | `
                          /usr/local/bin/bzip2 -9 > `
                          $backup/$db.$level.sql.bz2

if [ $? -ne 0 ] ; then
     echo "Dump of owncloud db failed"
fi

if [ -d /media/backup/$dbhost/week5 ] ; then
         rm -rf /media/backup/$dbhost/week5
         if [ $? -ne 0 ] ; then
                 echo "Unable to remove folder 
/media/backup/$dbhost/week5"
         fi
fi

umount /media/backup

if [ $? -ne 0 ] ; then
         echo "Unable to umount backup share"
         exit 5
fi

exit 0


> I look forward to learning more about this! Thank you.
> 
> Kyle

I hope this helps you.

Bruno




More information about the Owncloud mailing list