Kodi DB Backup

The XBMC Backup addon does not back up the mysql database, so this script should be used:

dbbackup.sh
#!/bin/bash
KODIUSER="kodi"
KODIPASS="kodi"
BACKUPDIR="/home/kodi/.kodi/userdata/Database/dbbackup"
BACKUPKEEPDAYS=7
DATE=`/bin/date +%Y%m%d-%H%M`

echo "Beginning Kodi database backup."
echo "Creating backup directory."
mkdir -p $BACKUPDIR

# Get music database number
MUSIC_DB=$(mysql -u $KODIUSER -p$KODIPASS -e "Show databases;" 2>/dev/null | grep "MyMusic")
for DB in $MUSIC_DB
do
    #DBSHORT=${DB:7}
    echo "Exporting database '"$DB"'."
    mysqldump -u $KODIUSER -a -c -h localhost --password="$KODIPASS" $DB --databases 2>/dev/null | bzip2 -z9 > "$BACKUPDIR/Music."$DB"."$DATE".sql.bz2"
    echo "Music database exported.";
done

# Get video database number
VIDEO_DB=$(mysql -u $KODIUSER -p$KODIPASS -e "Show databases;" 2>/dev/null | grep "MyVideos")
#VIDEO_DB=${VIDEO_DB:8}
for DB in $VIDEO_DB
do
    echo "Exporting database '"$DB"'"
    mysqldump -u $KODIUSER -a -c -h localhost --password="$KODIPASS" --databases $DB 2>/dev/null | bzip2 -z9 > "$BACKUPDIR/Videos."$DB"."$DATE".sql.bz2"
    echo "Video database exported."
done

echo "Kodi backup finished."

# Cleanup
echo "Deleting backups older than $BACKUPKEEPDAYS days"
find $BACKUPDIR/* -mtime +$BACKUPKEEPDAYS -exec rm {} \;
echo "Done"

Make script executable:

chmod 755 /home/kodi/dbbackup.sh

Either add it to crontab to execute it at a particular time like 1am each day:

crontab -e

add add

0 1 * * * /home/kodi/dbbackup.sh

or add it to daily crontab as root:

echo "#!/bin/sh" > /etc/cron.daily/kodi-db-backup
echo "/home/kodi/dbbackup.sh" >> /etc/cron.daily/kodi-db-backup
chmod 755 /etc/cron.daily/kodi-db-backup