aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2012-01-04 15:43:08 -0200
committerSilvio Rhatto <rhatto@riseup.net>2012-01-04 15:43:08 -0200
commit26cbb26cebd495fd6260b6af65b37fe5c8a8c00b (patch)
tree02f5dae382c02f04e87d37816e409252f26579a7
parentf360acf0fab1d941bc7de8bec3d22aabd64f49fe (diff)
downloadhydra-26cbb26cebd495fd6260b6af65b37fe5c8a8c00b.tar.gz
hydra-26cbb26cebd495fd6260b6af65b37fe5c8a8c00b.tar.bz2
Support for restoring backups from /var/backups/restore; svn and git restore support
-rw-r--r--lib/hydra/backup20
-rwxr-xr-xshare/hydra/deploy2
-rwxr-xr-xshare/hydractl/backup-restore10
-rwxr-xr-xshare/hydractl/backup-restore-gitosis45
-rwxr-xr-xshare/hydractl/backup-restore-site6
-rwxr-xr-xshare/hydractl/backup-restore-svn46
6 files changed, 108 insertions, 21 deletions
diff --git a/lib/hydra/backup b/lib/hydra/backup
index f98aa0f..9c35ff9 100644
--- a/lib/hydra/backup
+++ b/lib/hydra/backup
@@ -1,7 +1,7 @@
#!/bin/bash
-# Setup environment for backup restored from localhost
-function hydra_backup_environment_local {
+# Setup environment for the backups website
+function hydra_backup_environment_local_website {
SITE="$1"
BACKUPDIR="/var/sites/backups/site/$SITE"
@@ -14,12 +14,26 @@ function hydra_backup_environment_local {
RESTOREDIR="$BACKUPDIR/$DATE"
else
RESTOREDIR="$BACKUPDIR/`date +%Y%m%d`"
- fi
+ fi
DB_DUMP_BASE="$RESTOREDIR"
mkdir -p $RESTOREDIR
}
+# Setup environment for backup restored from localhost
+function hydra_backup_environment_local {
+ BACKUPDIR="/var/backups/duplicity"
+
+ if [ ! -z "$DATE" ]; then
+ RESTOREDIR="/var/backups/restore/$DATE"
+ else
+ RESTOREDIR="/var/backups/restore/`date +%Y%m%d`"
+ fi
+
+ DB_DUMP_BASE="$RESTOREDIR/var/backups/mysql/sqldump/"
+ mkdir -p $RESTOREDIR
+}
+
# Setup environment for backup restored from remote source
function hydra_backup_environment_remote {
NODE="$1"
diff --git a/share/hydra/deploy b/share/hydra/deploy
index adeb6c8..0a8a5de 100755
--- a/share/hydra/deploy
+++ b/share/hydra/deploy
@@ -9,7 +9,7 @@ hydra_config_load
# Command line arguments
NODES="$*"
-COMMIT="d8e20cc9fa92f07def15ebf3041405627fb66eae"
+COMMIT="f360acf0fab1d941bc7de8bec3d22aabd64f49fe"
# Build node list
if [ -z "$NODES" ]; then
diff --git a/share/hydractl/backup-restore b/share/hydractl/backup-restore
index 160ed5e..a5bfd42 100755
--- a/share/hydractl/backup-restore
+++ b/share/hydractl/backup-restore
@@ -2,12 +2,16 @@
#
# Backup restoration.
#
-# TODO: optionally restore from local backup
-#
# Load.
source $APP_BASE/lib/hydra/functions || exit 1
hydra_config_load
-hydra_backup_environment_remote $*
+# Check restore strategy.
+if [ "$1" == "localhost" ]; then
+ hydra_backup_environment_local $2 restore
+else
+ hydra_backup_environment_remote $1 restore
+fi
+
duplicity restore file:///$BACKUPDIR/ $RESTOREDIR/
diff --git a/share/hydractl/backup-restore-gitosis b/share/hydractl/backup-restore-gitosis
index 7da4a05..f569a8e 100755
--- a/share/hydractl/backup-restore-gitosis
+++ b/share/hydractl/backup-restore-gitosis
@@ -2,15 +2,48 @@
#
# Gitosis backup restoration.
#
-# TODO
# Load.
source $APP_BASE/lib/hydra/functions || exit 1
hydra_config_load
-hydra_backup_environment_remote $*
+# Parameters.
+DATE="`date +%Y%m%d`"
-# Check if folder exist on the backup
-# Check if there's already a site folder and backup it
-# Copy site folder from backup
-# Fix permissions
+# Check restore strategy.
+if [ "$1" == "localhost" ] || [ "$1" == "`facter hostname`" ]; then
+ hydra_backup_environment_local $2 restore
+else
+ hydra_backup_environment_remote $1 restore
+fi
+
+# Check if folder exist on the backup.
+if [ ! -d "$RESTOREDIR/var/git" ]; then
+ echo "Git folder does not exist: $RESTOREDIR/var/git"
+ exit 1
+fi
+
+# Set git user.
+if hydra_check_user gitosis; then
+ $GIT_USER="gitosis"
+else
+ $GIT_USER="root"
+fi
+
+# Set git group.
+if hydra_check_group gitosis; then
+ $GIT_GROUP="gitosis"
+else
+ $GIT_GROUP="root"
+fi
+
+# TODO: more like backup-site
+# Backup it.
+mkdir -p /var/site/backups/git/
+mv /var/git /var/site/backups/git/$DATE
+
+# Copy site folder from backup.
+cp -a $RESTOREDIR/var/git /var/git
+
+# Fix permissions.
+chown -R $GIT_USER.$GIT_GROUP /var/git
diff --git a/share/hydractl/backup-restore-site b/share/hydractl/backup-restore-site
index 4604755..ae8f87a 100755
--- a/share/hydractl/backup-restore-site
+++ b/share/hydractl/backup-restore-site
@@ -19,8 +19,10 @@ if [ -z "$SITE" ]; then
exit 1
fi
-# Check restore stratety.
-if [ "$1" == "localhost" ]; then
+# Check restore strategy.
+if [ "$1" == "backups" ]; then
+ hydra_backup_environment_local_website $2 restore
+elif [ "$1" == "localhost" ] || [ "$1" == "`facter hostname`" ]; then
hydra_backup_environment_local $2 restore
else
hydra_backup_environment_remote $1 restore
diff --git a/share/hydractl/backup-restore-svn b/share/hydractl/backup-restore-svn
index e4b1660..2f15563 100755
--- a/share/hydractl/backup-restore-svn
+++ b/share/hydractl/backup-restore-svn
@@ -2,15 +2,49 @@
#
# Subversion backup restoration.
#
-# TODO
# Load.
source $APP_BASE/lib/hydra/functions || exit 1
hydra_config_load
-hydra_backup_environment_remote $*
+# Parameters.
+DATE="`date +%Y%m%d`"
-# Check if folder exist on the backup
-# Check if there's already a site folder and backup it
-# Copy site folder from backup
-# Fix permissions
+# Check restore strategy.
+if [ "$1" == "localhost" ] || [ "$1" == "`facter hostname`" ]; then
+ hydra_backup_environment_local $2 restore
+else
+ hydra_backup_environment_remote $1 restore
+fi
+
+# Check if folder exist on the backup.
+if [ -d "$RESTOREDIR/var/svn" ]; then
+ echo "SVN folder does not exist: $RESTOREDIR/var/svn"
+ exit 1
+fi
+
+# TODO: more like backup-site
+# Backup it.
+mkdir -p /var/site/backups/svn/
+mv /var/svn /var/site/backups/svn/$DATE
+
+# Set svn user.
+if hydra_check_user svn; then
+ $SVN_USER="svn"
+else
+ $SVN_USER="root"
+fi
+
+# Set svn group.
+if hydra_check_group svn; then
+ $SVN_GROUP="svn"
+else
+ $SVN_GROUP="root"
+fi
+
+# Copy site folder from backup.
+cp -a $RESTOREDIR/var/svn /var/svn
+
+# Fix permissions.
+chown root.root /var/svn
+chown -R $SVN_USER.$SVN_GROUP /var/svn/*