From 3f397ff1575b79f74184302f3c3b8e549895f571 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Wed, 4 Jan 2012 18:43:33 -0200 Subject: Adding backup/copy sites; restoration fixes --- lib/hydra/backup | 11 ++++++----- share/hydra/deploy | 2 +- share/hydractl/backup-copy-site | 15 +++++++++++++++ share/hydractl/backup-copy-sites | 26 ++++++++++++++++++++++++++ share/hydractl/backup-restore | 10 ++++++++-- share/hydractl/backup-restore-gitosis | 2 +- share/hydractl/backup-restore-site | 4 ++-- share/hydractl/backup-restore-svn | 2 +- share/hydractl/backup-site | 13 ++++++++++--- share/hydractl/backup-sites | 14 ++++++++++++++ 10 files changed, 84 insertions(+), 15 deletions(-) create mode 100755 share/hydractl/backup-copy-site create mode 100755 share/hydractl/backup-copy-sites create mode 100755 share/hydractl/backup-sites diff --git a/lib/hydra/backup b/lib/hydra/backup index 9c35ff9..e3edf50 100644 --- a/lib/hydra/backup +++ b/lib/hydra/backup @@ -2,10 +2,11 @@ # Setup environment for the backups website function hydra_backup_environment_local_website { - SITE="$1" - BACKUPDIR="/var/sites/backups/site/$SITE" + NODE="$1" + SITE="$2" + BACKUPDIR="/var/sites/backups/site/$SITE/$NODE" - if [ -z "$SITE" ]; then + if [ -z "$SITE" ] || [ -z "$NODE" ]; then hydra_action_usage exit 1 fi @@ -61,10 +62,10 @@ function hydra_backup_environment_remote { if [ -z "$METHOD" ]; then if [ -d "$BACKUPDIR/rsync" ]; then echo "Assuming rsync backup method" - BACKUPDIR="$BACKUPDIR/rsync" + BACKUPDIR="$BACKUPDIR/rsync/var/backups/duplicity/daily.1" elif [ -d "$BACKUPDIR/rdiff" ]; then echo "Assuming rdiff backup method" - BACKUPDIR="$BACKUPDIR/rdiff" + BACKUPDIR="$BACKUPDIR/rdiff/var/backups/duplicity" else echo "Missing backup action" exit 1 diff --git a/share/hydra/deploy b/share/hydra/deploy index 0a8a5de..561e675 100755 --- a/share/hydra/deploy +++ b/share/hydra/deploy @@ -9,7 +9,7 @@ hydra_config_load # Command line arguments NODES="$*" -COMMIT="f360acf0fab1d941bc7de8bec3d22aabd64f49fe" +COMMIT="26cbb26cebd495fd6260b6af65b37fe5c8a8c00b" # Build node list if [ -z "$NODES" ]; then diff --git a/share/hydractl/backup-copy-site b/share/hydractl/backup-copy-site new file mode 100755 index 0000000..d64ac7e --- /dev/null +++ b/share/hydractl/backup-copy-site @@ -0,0 +1,15 @@ +#!/bin/bash +# +# Copy a site backup between servers. +# + +# Load. +source $APP_BASE/lib/hydra/functions || exit 1 +hydra_config_load + +# TODO +# Basic parameters. +# Syntax check. +# Parse server name and port. +# Check restore strategy. +# Sync to remote destination. diff --git a/share/hydractl/backup-copy-sites b/share/hydractl/backup-copy-sites new file mode 100755 index 0000000..19b41d1 --- /dev/null +++ b/share/hydractl/backup-copy-sites @@ -0,0 +1,26 @@ +#!/bin/bash +# +# Copy multiple sites. +# + +# Basic parameters. +SERVER="$1" + +# Syntax check. +if [ -z "$SITE" ]; then + hydra_action_usage + exit 1 +fi + +# Determine sites to copy. +if [ -z "$2" ]; then + sites="`ls /var/sites`" +else + shift + sites="$*" +fi + +# Copy each site. +for site in $sites; do + hydractl backup-copy-site $SERVER $site +done diff --git a/share/hydractl/backup-restore b/share/hydractl/backup-restore index a5bfd42..438d1a6 100755 --- a/share/hydractl/backup-restore +++ b/share/hydractl/backup-restore @@ -7,11 +7,17 @@ source $APP_BASE/lib/hydra/functions || exit 1 hydra_config_load +# Syntax check. +if [ -z "$1" ]; then + echo "Usage: `basename $0` [rsync|rdiff]" + exit 1 +fi + # Check restore strategy. if [ "$1" == "localhost" ]; then - hydra_backup_environment_local $2 restore + hydra_backup_environment_local else - hydra_backup_environment_remote $1 restore + hydra_backup_environment_remote $* fi duplicity restore file:///$BACKUPDIR/ $RESTOREDIR/ diff --git a/share/hydractl/backup-restore-gitosis b/share/hydractl/backup-restore-gitosis index f569a8e..f8b9ea3 100755 --- a/share/hydractl/backup-restore-gitosis +++ b/share/hydractl/backup-restore-gitosis @@ -12,7 +12,7 @@ DATE="`date +%Y%m%d`" # Check restore strategy. if [ "$1" == "localhost" ] || [ "$1" == "`facter hostname`" ]; then - hydra_backup_environment_local $2 restore + hydra_backup_environment_local else hydra_backup_environment_remote $1 restore fi diff --git a/share/hydractl/backup-restore-site b/share/hydractl/backup-restore-site index ae8f87a..8f10225 100755 --- a/share/hydractl/backup-restore-site +++ b/share/hydractl/backup-restore-site @@ -21,9 +21,9 @@ fi # Check restore strategy. if [ "$1" == "backups" ]; then - hydra_backup_environment_local_website $2 restore + hydra_backup_environment_local_website $2 $3 elif [ "$1" == "localhost" ] || [ "$1" == "`facter hostname`" ]; then - hydra_backup_environment_local $2 restore + hydra_backup_environment_local else hydra_backup_environment_remote $1 restore fi diff --git a/share/hydractl/backup-restore-svn b/share/hydractl/backup-restore-svn index 2f15563..ad17fdf 100755 --- a/share/hydractl/backup-restore-svn +++ b/share/hydractl/backup-restore-svn @@ -12,7 +12,7 @@ DATE="`date +%Y%m%d`" # Check restore strategy. if [ "$1" == "localhost" ] || [ "$1" == "`facter hostname`" ]; then - hydra_backup_environment_local $2 restore + hydra_backup_environment_local else hydra_backup_environment_remote $1 restore fi diff --git a/share/hydractl/backup-site b/share/hydractl/backup-site index 7dd9acf..4bbaef4 100755 --- a/share/hydractl/backup-site +++ b/share/hydractl/backup-site @@ -1,6 +1,6 @@ #!/bin/bash # -# Pack a website. +# Backup a site. # # Arguments @@ -8,7 +8,7 @@ SITES="/var/sites" SITE="$1" PACK="$1.tar.bz2" DATE="`date +%Y%m%d`" -DEST="$SITES/backups/site/$SITE/$DATE" +DEST="$SITES/backups/site/$SITE/`facter hostname`/$DATE" # Syntax check if [ -z "$SITE" ]; then @@ -16,6 +16,13 @@ if [ -z "$SITE" ]; then exit 1 fi +# Determine site location. +if [ "$SITE" == "git" ] && [ "$SITE" == "svn" ]; then + LOCATION="/var" +else + LOCATION="$SITES" +fi + # Set backups user. if hydra_check_user backups; then $BACKUPS_USER="backups" @@ -54,7 +61,7 @@ fi # Backup site if [ -d "$SITES/$SITE" ]; then echo "Backing up site folder..." - tar jcvf $PACK $SITES/$SITE + tar jcvf $PACK $LOCATION/$SITE md5sum $PACK > $PACK.md5 sha1sum $PACK > $PACK.sha1 chown root.$BACKUPS_GROUP $PACK* diff --git a/share/hydractl/backup-sites b/share/hydractl/backup-sites new file mode 100755 index 0000000..883566e --- /dev/null +++ b/share/hydractl/backup-sites @@ -0,0 +1,14 @@ +#!/bin/bash +# +# Pack multiple websites. +# + +if [ -z "$1" ]; then + sites="`ls /var/sites`" +else + sites="$*" +fi + +for site in $sites; do + hydractl backup-site $site +done -- cgit v1.2.3