]> gitweb.fluxo.info Git - hydra.git/commitdiff
Support for restoring backups from /var/backups/restore; svn and git restore support
authorSilvio Rhatto <rhatto@riseup.net>
Wed, 4 Jan 2012 17:43:08 +0000 (15:43 -0200)
committerSilvio Rhatto <rhatto@riseup.net>
Wed, 4 Jan 2012 17:43:08 +0000 (15:43 -0200)
lib/hydra/backup
share/hydra/deploy
share/hydractl/backup-restore
share/hydractl/backup-restore-gitosis
share/hydractl/backup-restore-site
share/hydractl/backup-restore-svn

index f98aa0fb55edcf4c835e1db688607242cc8f103d..9c35ff95dbee1a71292b4fd308329cf13793115a 100644 (file)
@@ -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"
index adeb6c81c41f7d3a9d83fce07e28b1c9494779d3..0a8a5deb84098f7d2b32e5bb98b816f61aa2b0b6 100755 (executable)
@@ -9,7 +9,7 @@ hydra_config_load
 
 # Command line arguments
 NODES="$*"
-COMMIT="d8e20cc9fa92f07def15ebf3041405627fb66eae"
+COMMIT="f360acf0fab1d941bc7de8bec3d22aabd64f49fe"
 
 # Build node list
 if [ -z "$NODES" ]; then
index 160ed5e8b50a92c67f7a0451c9e4a1879cc249ac..a5bfd42c1f34b6836ef44ecb4095cdf77bc3d641 100755 (executable)
@@ -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/
index 7da4a059fff36c012bf1a886dd5dbbd4e17d4db5..f569a8e744210d4f7aba493cd38d102b48087671 100755 (executable)
@@ -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
index 4604755d645f5e1d84af071238f0e2bc4b995d17..ae8f87ad84ea3e2b4c01c2d0916a2c76dade9d61 100755 (executable)
@@ -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
index e4b166044a2f8ca3fddb2bca6de750bf7b81fc3b..2f15563b922b8540222a0b70ffb7f19c04d12db7 100755 (executable)
@@ -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/*