#!/bin/bash # # Pack a website. # # Arguments SITES="/var/sites" SITE="$1" PACK="$1.tar.bz2" DATE="`date +%Y%m%d`" DEST="$SITES/backups/site/$SITE/$DATE" # Syntax check if [ -z "$SITE" ]; then hydra_action_usage exit 1 fi # Set backups user. if hydra_check_user backups; then $BACKUPS_USER="backups" else $BACKUPS_USER="root" fi # Set backups group. if hydra_check_group backups; then $BACKUPS_GROUP="backups" else $BACKUPS_GROUP="root" fi # Create folder mkdir -p $DEST cd $DEST # Password setup if [ ! -e "$SITES/backups/site/$SITE/.htpasswd" ]; then touch $SITES/backups/site/$SITE/.htpasswd chmod 640 $SITES/backups/site/$SITE/.htpasswd chown root.$BACKUPS_GROUP $SITES/backups/site/$SITE/.htpasswd fi # Access setup if [ ! -e "$SITES/backups/site/$SITE/.htaccess" ]; then cat > $SITES/backups/site/$SITE/.htaccess <<-EOF AuthType Basic AuthName "Backup $SITE" AuthUserFile $SITES/backups/site/$SITE/.htpasswd Require valid-user EOF fi # Backup site if [ -d "$SITES/$SITE" ]; then echo "Backing up site folder..." tar jcvf $PACK $SITES/$SITE md5sum $PACK > $PACK.md5 sha1sum $PACK > $PACK.sha1 chown root.$BACKUPS_GROUP $PACK* chmod 640 $PACK* echo "Saved $DEST/$PACK" fi # Backup database if [ -d "/var/lib/mysql/$SITE" ]; then echo "Backing up database $SITE..." mysqldump $SITE > $SITE.sql bzip2 $SITE.sql md5sum $SITE.sql.bz2 > $SITE.sql.bz2.md5 sha1sum $SITE.sql.bz2 > $SITE.sql.bz2.sha1 chown root.$BACKUPS_GROUP $SITE.sql* chmod 640 $SITE.sql* echo "Saved $DEST/$SITE.sql.bz2" else echo "Database not found, please backup it manually" fi