#!/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" DATE="`date "+%Y%m%d-%H%M%S"`" BACKUP_DIR="/srv/backup" BASENAME="Backup" TAG="System" BACKUP="$BACKUP_DIR/$BASENAME.$DATE.$HOSTNAME.$TAG.zip" TAG2="Data" BACKUP2="${BACKUP//$TAG/$TAG2}" ## 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 mv -v "$BASENAME"*"$TAG2"* TRASH/ sudo rm -v TRASH/* ## Main # System Backup echo "*** Creating backup at '$BACKUP' ***" sudo zip -rv "$BACKUP" \ /etc /var/{log,mail,spool} /srv /boot \ /usr/local/etc $EXTRA \ -x "/srv/backup/*" -x "/srv/sftp/*" 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! ***" else echo "*** '$BACKUP' not found! ***" exit 1 fi # Data Backup echo "*** Creating backup at '$BACKUP2' ***" sudo zip -rv "$BACKUP2" \ /root /home /srv/sftp status="$?" if [[ "$status" != 0 ]]; then echo "*** ERROR: Failed to create '$BACKUP2', file may be incorrect. ***" fi if [[ -e "$BACKUP2" ]]; then ls -alh "$BACKUP2" echo "*** '$BACKUP2' created successfully! ***" else echo "*** '$BACKUP2' not found! ***" exit 1 fi exit 0