Added rsync-backup.sh script and example config
This script can be executed in a cronjob and to regularly backup certain predefined files. AFter backing up, the script will send an email to inform the admin about the backup.
This commit is contained in:
commit
17baa237f9
14
rsync-backup/rsync-backup.conf.example
Normal file
14
rsync-backup/rsync-backup.conf.example
Normal file
@ -0,0 +1,14 @@
|
||||
#################################################################
|
||||
# Config
|
||||
#################################################################
|
||||
EMAIL='' # Send confirmation email to this address
|
||||
SSH_HOST='' # Target host
|
||||
SSH_USER='' # User on target host
|
||||
SSH_KEY='' # location of SSH key
|
||||
SSH_PORT='22'
|
||||
|
||||
declare -a SRC_DIRS=(
|
||||
#"/home"
|
||||
)
|
||||
|
||||
DST_DIR=''
|
78
rsync-backup/rsync-backup.sh
Executable file
78
rsync-backup/rsync-backup.sh
Executable file
@ -0,0 +1,78 @@
|
||||
#!/bin/bash
|
||||
|
||||
#################################################################
|
||||
# Check availability of software
|
||||
#################################################################
|
||||
function availability {
|
||||
if [[ ! $(command -v $1) ]]; then
|
||||
echo Error: '$1' is not available but required. Please install it!
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
availability mail
|
||||
availability rsync
|
||||
|
||||
#################################################################
|
||||
# Get arguments
|
||||
#################################################################
|
||||
missingArg()
|
||||
{
|
||||
echo "Error: Please define the configuration to be used!"
|
||||
echo " Usage: $0 -c <configuration_file>"
|
||||
exit 1
|
||||
}
|
||||
|
||||
while getopts "c:" opt
|
||||
do
|
||||
case "$opt" in
|
||||
c ) CONFIG_FILE="$OPTARG" ;;
|
||||
? ) missingArg ;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Check if config was empty
|
||||
if [ -z "$CONFIG_FILE" ]
|
||||
then
|
||||
missingArg
|
||||
fi
|
||||
|
||||
# Check if config file exists
|
||||
if [ ! -f $CONFIG_FILE ]
|
||||
then
|
||||
echo "$CONFIG_FILE does not exist!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source $CONFIG_FILE
|
||||
|
||||
#################################################################
|
||||
# Loop through array and invoke rsync
|
||||
#################################################################
|
||||
date_styled=$(date -d "today" +"%Y%m%d_%H%M")
|
||||
|
||||
for i in "${SRC_DIRS[@]}"
|
||||
do
|
||||
|
||||
echo "" >> /tmp/rsync_log_$date_styled
|
||||
echo "======================================================" >> /tmp/rsync_log_$date_styled
|
||||
echo "${i^^}" >> /tmp/rsync_log_$date_styled
|
||||
echo "======================================================" >> /tmp/rsync_log_$date_styled
|
||||
|
||||
rsync -av --delete --rsh="ssh -p $SSH_PORT -i $SSH_KEY" $i $SSH_USER@$SSH_HOST:$DST_DIR >> /tmp/rsync_log_$date_styled
|
||||
done
|
||||
|
||||
|
||||
#################################################################
|
||||
# Send email with information and hashes
|
||||
#################################################################
|
||||
sed -i '1s/^/Hey there!\n\nI created a new backup. See the log below.\n/' /tmp/rsync_log_$date_styled
|
||||
|
||||
mail -s "Backup created ($date_styled)" $EMAIL < /tmp/rsync_log_$date_styled
|
||||
|
||||
#################################################################
|
||||
# Delete log
|
||||
#################################################################
|
||||
rm -f /tmp/rsync_log_$date_styled
|
||||
|
||||
exit 0
|
Loading…
Reference in New Issue
Block a user