aboutsummaryrefslogtreecommitdiff
path: root/lib/hydra/backup
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2012-06-28 11:53:41 -0300
committerSilvio Rhatto <rhatto@riseup.net>2012-06-28 11:53:41 -0300
commita7bb43458ea3a6b7cc367a35013af8c313f4fef4 (patch)
treedc067dab43b86ac936afde957ad56731726eabd8 /lib/hydra/backup
parentd3e71380b0429463b107eb53c19eabad895a5628 (diff)
downloadhydra-a7bb43458ea3a6b7cc367a35013af8c313f4fef4.tar.gz
hydra-a7bb43458ea3a6b7cc367a35013af8c313f4fef4.tar.bz2
Unifying database restoration with hydra_backup_restore_database
Diffstat (limited to 'lib/hydra/backup')
-rw-r--r--lib/hydra/backup34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/hydra/backup b/lib/hydra/backup
index e3edf50..0209570 100644
--- a/lib/hydra/backup
+++ b/lib/hydra/backup
@@ -87,3 +87,37 @@ function hydra_backup_environment_remote {
DB_DUMP_BASE="$RESTOREDIR/var/backups/mysql/sqldump/"
mkdir -p $RESTOREDIR
}
+
+# Restore a database
+function hydra_backup_restore_database {
+ DATABASE="$1"
+
+ if [ -z "$DATABASE" ]; then
+ return
+ fi
+
+ # Check if there are database dumps
+ if [ -f "$DB_DUMP_BASE/$DATABASE.sql.gz" ]; then
+ DB_DUMP_EXT=".gz"
+ DB_DUMP_EXTRACT="gunzip"
+ elif [ -f "$DB_DUMP_BASE/$DATABASE.sql.bz2" ]; then
+ DB_DUMP_EXT=".bz2"
+ DB_DUMP_EXTRACT="bunzip2"
+ elif [ -f "$DB_DUMP_BASE/$DATABASE.sql" ]; then
+ DB_DUMP_EXT=""
+ DB_DUMP_EXTRACT="true"
+ fi
+
+ # Restore database
+ if [ ! -z "$DB_DUMP_EXT" ]; then
+ echo "Restoring database $DATABASE..."
+ hydra_set_tmpfile $DATABASE -d
+ cp $DB_DUMP_BASE/$DATABASE.sql$DB_DUMP_EXT $TMPWORK
+ ( cd $TMPWORK && $DB_DUMP_EXTRACT $DATABASE.sql$DB_DUMP_EXT )
+ hydra_truncate_database $DATABASE
+ mysql $DATABASE < $TMPWORK/$DATABASE.sql
+ hydra_unset_tmpfile $TMPWORK
+ else
+ echo "Database should be manually restored"
+ fi
+}