Fixes and enhancements for system backups.

This commit is contained in:
2025-10-14 08:12:19 -07:00
parent afc3b20785
commit 07e32decf8

38
files/scripts/backup_system.sh Normal file → Executable file
View File

@@ -1,43 +1,55 @@
#/usr/bin/env bash
#!/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_DIR/Backup"
BACKUP="$BASENAME.`now`.$HOSTNAME.$TAG.zip"
BACKUP="$BASENAME.$DATE.$HOSTNAME.$TAG.zip"
## Initialization ##
echo "*** Creating Backup Directory ***"
mkdir -pv $BACKUP_DIR
chmod -Rv 755 $BACKUP_DIR
chown -Rv root:root $BACKUP_DIR
sudo mkdir -pv "$BACKUP_DIR"
sudo chmod -Rv 755 "$BACKUP_DIR"
sudo chown -Rv root:root "$BACKUP_DIR"
cd "$BACKUP_DIR"
## Cleanup ##
echo "*** Removing Old Backups ***"
sh -c 'rm -fv "$BASENAME"*"$TAG"*'
mv -v "$BASENAME"*"$TAG"* ~/TRASH/
rm -v ~/TRASH/"${BASENAME}*${TAG}*.zip"
## Main
echo "*** Creating backup at '$BACKUP' ***"
sudo zip -rv "$BACKUP" \
/etc /var/{log,mail,spool} /srv /boot \
/usr/local/etc $EXTRA
/etc /var/{log,mail,spool} /srv /boot \
/usr/local/etc $EXTRA
status="$?"
if [[ "$status" != 0 ]]; then
echo "*** ERROR: Failed to create '$BACKUP', file may be incorrect. ***"
echo "*** ERROR: Failed to create '$BACKUP', file may be incorrect. ***"
fi
if [[ -e "$BACKUP" ]]; then
ls -alh "$BACKUP"
echo "*** '$BACKUP' created successfully! ***"s
ls -alh "$BACKUP"
echo "*** '$BACKUP' created successfully! ***"s
else
echo "*** '$BACKUP' not found! ***"
exit 1
echo "*** '$BACKUP' not found! ***"
exit 1
fi
exit 0