Initial checkin

This commit is contained in:
Radar231 2021-08-01 19:40:48 -04:00
commit f5b01d6d7a
8 changed files with 166 additions and 0 deletions

32
README.md Normal file
View File

@ -0,0 +1,32 @@
# du_backups
# Introduction
This is a collection of scripts that I use to manage a duplicity based backup
solution.
Configuration for the specific environment are located at the top of each
script.
* du-bu
* The main backup script
* du-check
* A script to examine the previously completed backups for the current
host only, on the destination server
* du-all-check
* Similar to du-check, but checks backups from all hosts
* du-clean
* A script to clean up backups from the destination server that are no
longer required
* du-wrapper
* A simple wrapper script for calling du-bu from a crontab entry. This
script will perform a full backup on the first day of the month, and an
incremental backup on any other day.
* du-list
* A list of directories to be backed up.

6
cron_entry.txt Normal file
View File

@ -0,0 +1,6 @@
# Daily backup - full back on 1st of the month, incremental otherwise
00 01 * * * /usr/local/bin/du-wrapper >>/usr/local/log/duplicity_cron_run.log 2>&1 &
# Monthly cleanup of old backups
00 10 01 * * /usr/local/bin/du-clean >>/usr/local/log/duplicity_cron_run.log 2>&1 &

26
du-all-check Executable file
View File

@ -0,0 +1,26 @@
#!/bin/bash
buuser="buuser"
remhost="files.lan"
rembase="/volumeUSB1/usbshare/rsync-backups"
hosts=$(ssh ${buuser}@${remhost} ls -d ${rembase}/* | cut -d'/' -f5 | grep "_backups")
for i in $hosts
do
backups=$(ssh ${buuser}@${remhost} ls -d ${rembase}/${i}/* | cut -d'/' -f6)
for j in $backups
do
budst="rsync://${buuser}@${remhost}//${rembase}/${i}/${j}"
echo "Backup: ${i}/${j}"
echo ">>>>>>>>>>>>>=============<<<<<<<<<<<<<"
echo ""
/usr/bin/duplicity --no-encryption collection-status ${budst}
echo ""
done
cd ..
done

34
du-bu Executable file
View File

@ -0,0 +1,34 @@
#!/bin/bash
bulist="/usr/local/etc/du-list"
logdir="/usr/local/log"
curhost=$(hostname)
remhost="files.lan"
rembase="/volumeUSB1/usbshare/rsync-backups/${curhost}_backups"
buuser="buuser"
budst="rsync://${buuser}@${remhost}//${rembase}"
echo "Backup run for ${curhost} beginning at $(date +%Y%m%d-%H%M%S)" >> ${logdir}/duplicity_run.log
list=$(cat ${bulist})
for i in $list
do
buname=$(echo $i | sed 's/\//_/g' | sed 's/^_//g')
bulog="${logdir}/duplicity_${buname}_$(date +%Y%m%d-%H%M%S)_run.log"
ssh ${buuser}@${remhost} mkdir -p ${rembase}/${buname}
if [ ! -z $1 ];
then
echo "$(date +%H%M%S): Doing full backup of ${i}" >> ${logdir}/duplicity_run.log
/usr/bin/duplicity full --no-encryption --name ${buname} $i ${budst}/${buname} 2>&1 >> ${bulog}
else
echo "$(date +%H%M%S): Doing incremental backup of ${i}" >> ${logdir}/duplicity_run.log
/usr/bin/duplicity --no-encryption --name ${buname} $i ${budst}/${buname} 2>&1 >> ${bulog}
fi
done
echo "Backup run completed at $(date +%Y%m%d-%H%M%S)" >> ${logdir}/duplicity_run.log

25
du-check Executable file
View File

@ -0,0 +1,25 @@
#!/bin/bash
bulist="/usr/local/etc/du-list"
curhost=$(hostname)
buuser="buuser"
remhost="files.lan"
rembase="/volumeUSB1/usbshare/rsync-backups/${curhost}_backups"
budst="rsync://${buuser}@${remhost}//${rembase}"
buList=$(cat ${bulist})
for i in $buList
do
buname=$(echo $i | sed 's/\//_/g' | sed 's/^_//g')
echo "Backup: ${buname}"
echo ">>>>>>>>>>>>>=============<<<<<<<<<<<<<"
echo ""
/usr/bin/duplicity --no-encryption collection-status ${budst}/${buname}
echo ""
done

27
du-clean Executable file
View File

@ -0,0 +1,27 @@
#!/bin/bash
bulist="/usr/local/etc/du-list"
logdir="/usr/local/log"
curhost=$(hostname)
buuser="buuser"
remhost="files.lan"
rembase="/volumeUSB1/usbshare/rsync-backups/${curhost}_backups"
budst="rsync://${buuser}@${remhost}//${rembase}"
curDay=$(date +%d)
echo "Duplicity cleanup run for ${curhost} beginning at $(date +%Y%m%d-%H%M%S)" >> ${logdir}/duplicity_cleanup_run.log
list=$(cat ${bulist})
for i in $list
do
buname=$(echo $i | sed 's/\//_/g' | sed 's/^_//g')
bulog="${logdir}/duplicity_${buname}_$(date +%Y%m%d-%H%M%S)_cleanup_run.log"
/usr/bin/duplicity remove-all-but-n-full 2 --force --no-encryption ${budst}/${buname} 2>&1 >> ${bulog}
done
echo "Duplicity cleanup run completed at $(date +%Y%m%d-%H%M%S)" >> ${logdir}/duplicity_cleanup_run.log

5
du-list Normal file
View File

@ -0,0 +1,5 @@
/etc
/home/rmorrow
/root
/usr/local/bin
/usr/local/etc

11
du-wrapper Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
curDay=$(date +%d)
if [[ "${curDay}" -eq "1" ]];
then
/usr/local/bin/du-bu full
else
/usr/local/bin/du-bu
fi