aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Runge <dave@sleepmap.de>2015-03-20 01:07:55 +0100
committerDavid Runge <dave@sleepmap.de>2015-03-20 01:07:55 +0100
commit7054dc69613f47d2b68dbca06f4895fe52412f7c (patch)
tree98ae005be114e410c1739c80febd493bc0402f9b
parentc10efa7645f9f135b0a8513eeb69cb9d162d1728 (diff)
downloadcrypted-backups-7054dc69613f47d2b68dbca06f4895fe52412f7c.tar.gz
crypted-backups-7054dc69613f47d2b68dbca06f4895fe52412f7c.tar.bz2
crypted-backups-7054dc69613f47d2b68dbca06f4895fe52412f7c.tar.xz
crypted-backups-7054dc69613f47d2b68dbca06f4895fe52412f7c.zip
backup-mariadb: Adding first version of backup-mariadb script, service and timer.
-rwxr-xr-xscripts/backup-mariadb30
-rw-r--r--system/backup-mariadb.service12
-rw-r--r--system/backup-mariadb.timer10
3 files changed, 52 insertions, 0 deletions
diff --git a/scripts/backup-mariadb b/scripts/backup-mariadb
new file mode 100755
index 0000000..ae5d0ec
--- /dev/null
+++ b/scripts/backup-mariadb
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+# Set required settings
+timestamp="$(date +"%Y%m%d-%H%M%S")-"
+
+# If the backup location doesn't exist yet, create it
+if [ ! -d $mariadb_folder_destination ]; then
+ mkdir -p $mariadb_folder_destination
+fi
+
+# Get the names of all databases
+databases=`mysql --user=$mariadb_user -p$mariadb_password -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|tmp)"`
+
+cd $tmp
+# Iterate over all database names and create a backup for each, encrypting them afterwards
+for db in $databases; do
+ echo "$db -> $mariadb_folder_destination$timestamp$db$sql_suffix$tar_suffix$gpg_suffix"
+ # dump .sql to /tmp
+ mysqldump --force --opt --user=$mariadb_user -p$mariadb_password --databases $db > $tmp$timestamp$db$sql_suffix
+ # tar in /tmp
+ tar cfJ $timestamp$db$sql_suffix$tar_suffix $timestamp$db$sql_suffix
+ # gpg to mariadb_folder_destination
+ gpg -e \
+ -r "$gpg_public_key" \
+ -o $mariadb_folder_destination$timestamp$db$sql_suffix$tar_suffix$gpg_suffix \
+ $timestamp$db$sql_suffix$tar_suffix
+ # delete tar and sql in /tmp
+ rm -f $timestamp$db$sql_suffix*
+done
+
diff --git a/system/backup-mariadb.service b/system/backup-mariadb.service
new file mode 100644
index 0000000..8aa6622
--- /dev/null
+++ b/system/backup-mariadb.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Backup MariaDB databases
+ConditionFileIsExecutable=/usr/lib/systemd/scripts/backup-mariadb
+ConditionFileIsExecutable=/usr/bin/mysql
+
+[Service]
+EnvironmentFile=/etc/backup-settings
+Nice=19
+IOSchedulingClass=2
+IOSchedulingPriority=7
+ExecStart=/usr/lib/systemd/scripts/backup-mariadb
+
diff --git a/system/backup-mariadb.timer b/system/backup-mariadb.timer
new file mode 100644
index 0000000..1f9fca6
--- /dev/null
+++ b/system/backup-mariadb.timer
@@ -0,0 +1,10 @@
+[Unit]
+Description=Backup MariaDB databases every Monday at 3:00
+
+[Timer]
+# Every Monday at 3:00
+OnCalendar=Mon *-*-* 03:00
+Persistent=true
+
+[Install]
+WantedBy=timers.target