Files
iDS-piBackup/pibackup.sh
2023-05-21 08:22:47 -05:00

92 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
TEST=false;
if [ "$1" != "update" ]; then
source /opt/idssys/defaults/colors.inc
source /opt/idssys/defaults/default.inc
source /opt/idssys/pibackup/settings.inc
BackupDir="${MountPoint}/${hostname}"
logfile=/opt/idssys/pibackup/logfile
echo
echo '----------------------------------------------------------------------------------------------------'
echo "$(date) - NEW BACKUP"
echo '----------------------------------------------------------------------------------------------------'
if grep '/dev/nvme0n1' /etc/mtab > /dev/null 2>&1; then dtype=/dev/nvme0n1
elif grep '/dev/mmcblk0' /etc/mtab > /dev/null 2>&1; then dtype=/dev/mmcblk0
fi
echo "$(date) - Checking for mounted Backup Drive..."
if [ ! -f ${MountPoint}/mounted ]; then
echo "$(date) - Not found, mounting drive now..."
if [ "${ServerName}" != "" ]; then
mount.cifs ${ServerName} ${MountPoint} -o user=${UserName},password=${Password}
else
mount -a
fi
c=0
until [ $c -gt 179 ]; do
if [ -f ${MountPoint}/mounted ]; then
echo "$(date) - Backup Drive mounted"
c=10000
else
((c++))
sleep 1s
fi
done
if [ $c != 10000 ]; then
echo "$(date) - Backup Drive COULD NOT be mounted... exiting"
exit 1
fi
else
echo "$(date) - Backup Drive already mounted"
fi
[ ! -d "$BackupDir" ] && mkdir -p "$BackupDir"
echo "$(date) - Starting Backup"
[ $TEST != true ] && dd if=${dtype} of=${BackupDir}/$(date +%Y-%m-%d).img bs=1M status=progress
echo "$(date) - Backup Complete"
[ $TEST != true ] && sleep 1m
echo "$(date) - Removing old backups..."
allfiles=`ls -1 ${BackupDir}/*.img*`
if [ "${BackupsToKeep}" == "" ]; then
BackupsToKeep=3
fi
files=(`ls -1 ${BackupDir}/*.img* | tail -${BackupsToKeep}`)
for i in $allfiles; do keep=0;
for a in ${files[@]}; do
if [ $i == $a ]; then keep=1; fi;
done;
if [ $keep == 0 ]; then
echo "$(date) - REMOVING : $i"
[ $TEST != true ] && rm -rf $i
else
echo "$(date) - KEEPING : $i"
fi
done
echo "$(date) - Completed"
#umount ${MountPoint}
echo "$(date) - Starting PiShrink on backup repository server"
remotePath="/mnt/BU-Raid1/RaspPi-Backups/${hostname}"
[ $TEST != true ] && ssh root@10.10.1.62 /opt/pishrink.sh -az ${remotePath}/$(date +%Y-%m-%d).img &
# [ $TEST != true ] && source /opt/idssys/pibackup/pishrink.sh -az ${BackupDir}/$(date +%Y-%m-%d).img
# echo "$(date) - PiShrink complete"
# [ $TEST != true ] && sleep 1m
fi
exit 0