#!/usr/bin/env bash ## Variables ## if [[ -z "$HOSTNAME" ]]; then echo "*** Pulling Hostname From Command ***" export HOSTNAME="`hostname`" fi if [[ -z "$HOSTNAME" ]]; then echo "*** Pulling Hostname From /etc/ File ***" export HOSTNAME="`cat /etc/hostname`" fi EXTRA="$1" TAG="System" DATE="`date "+%Y%m%d-%H%M%S"`" BACKUP_DIR="/srv/backup" BASENAME="Backup" BACKUP="$BACKUP_DIR/$BASENAME.$DATE.$HOSTNAME.$TAG.zip" ## Initialization ## echo "*** Creating Backup Directory ***" sudo mkdir -pv "$BACKUP_DIR" sudo mkdir -pv "$BACKUP_DIR/TRASH" sudo chmod -Rv 775 "$BACKUP_DIR" sudo chown -Rv root:root "$BACKUP_DIR" ## Cleanup ## echo "*** Removing Old Backups ***" cd "$BACKUP_DIR" sudo mv -v "$BASENAME"*"$TAG"* TRASH/ sudo rm -v TRASH/* ## Main echo "*** Creating backup at '$BACKUP' ***" sudo zip -rv "$BACKUP" \ /etc /var/{log,mail,spool} /srv /boot \ /usr/local/etc $EXTRA \ -x /srv/backup status="$?" if [[ "$status" != 0 ]]; then echo "*** ERROR: Failed to create '$BACKUP', file may be incorrect. ***" fi if [[ -e "$BACKUP" ]]; then ls -alh "$BACKUP" echo "*** '$BACKUP' created successfully! ***"s else echo "*** '$BACKUP' not found! ***" exit 1 fi exit 0