Backify/main.sh

119 lines
2.8 KiB
Bash
Raw Normal View History

2023-02-10 13:49:35 +00:00
#! /bin/bash
echo "Backify is starting, looking for configuration file..." >&2
config='backup.cfg'
config_secured='sbackup.cfg'
if config -f "$config"; then
echo "Configuration found." >&2
else
2023-02-10 14:43:57 +00:00
echo "Configuration not found" >&2
2023-02-10 13:49:35 +00:00
exit
fi
if egrep -q -v '^#|^[^ ]*=[^;]*' "$config"; then
echo "Config file is unclean, cleaning it..." >&2
egrep '^#|^[^ ]*=[^;&]*' "$config" > "$config_secured"
config="$config_secured"
fi
source "$config"
echo "Configuration file loaded" >&2
2023-02-10 14:43:57 +00:00
function makedir {
timestamp=$(date +%Y%m%d_%H%M)
2023-02-10 15:38:42 +00:00
mkdir /tmp/backify-$timestamp
tmpdir="/tmp/backify-$timestamp"
2023-02-10 14:43:57 +00:00
}
2023-02-10 13:49:35 +00:00
2023-02-10 14:43:57 +00:00
function wwwbackup {
2023-02-10 13:49:35 +00:00
if [ "$www_backup" = true ] then
echo "Backing up wwwroot..." >&2
mkdir -p $tmpdir/wwwdata
cp -r $www_dir/ $tmpdir/wwwdata/
echo "Finished" >&2
fi
2023-02-10 14:43:57 +00:00
}
2023-02-10 13:49:35 +00:00
2023-02-10 14:43:57 +00:00
function vhostbackup {
2023-02-10 13:49:35 +00:00
if [ "$vhost_backup" = true ] then
echo "Backing up vhosts..." >&2
mkdir -p $tmpdir/vhosts
cp -r $vhost_dir/ $tmpdir/vhosts/
echo "Finished" >&2
2023-02-10 14:43:57 +00:00
fi
}
function logbackup {
if [ "$log_backup" = true ] then
echo "Backing up system logs..." >&2
mkdir -p $tmpdir/syslogs
cp /var/log/syslog $tmpdir/syslogs/
cp /var/log/message $tmpdir/syslogs/
2023-02-10 15:51:49 +00:00
if [ "$fail2ban_log" = true ] then
cp /var/log/fail2ban.log $tmpdir/syslogs/
fi
2023-02-10 14:43:57 +00:00
if [ "$log_backup_web" = true] then
if [ "$apache" = true ] then
2023-02-10 15:51:49 +00:00
mkdir -p $tmpdir/apachelogs
cp -r /var/log/httpd $tmpdir/apachelogs
2023-02-10 14:43:57 +00:00
fi
if [ "$nginx" = true ] then
2023-02-10 15:51:49 +00:00
mkdir -p $tmpdir/nginxlogs
cp -r /var/log/nginx $tmpdir/nginxlogs
2023-02-10 14:43:57 +00:00
fi
fi
2023-02-10 15:51:49 +00:00
2023-02-10 14:43:57 +00:00
if [ "$log_purge" = true] then
echo "Purging logs..." >&2
truncate -s 0 /var/log/syslog
truncate -s 0 /var/log/message
if [ "$apache" = true ] then
2023-02-10 15:51:49 +00:00
# TODO: removal for .1.2.3 logs
truncate -s 0 /var/log/httpd/*
2023-02-10 14:43:57 +00:00
fi
if [ "$nginx" = true ] then
2023-02-10 15:51:49 +00:00
# TODO: removal for .1.2.3 logs
truncate -s 0 /var/log/nginx/*
fi
if [ "$fail2ban_log" = true ] then
truncate -s 0 /var/log/fail2ban.log
2023-02-10 14:43:57 +00:00
fi
fi
echo "Finished" >&2
fi
}
function push {
if [ "rsync_push" = true ] then
2023-02-10 15:51:49 +00:00
#Push - Dockerized
if [ "push_clean" = true ] then
rm /opt/backify-$timestamp.tar.gz
fi
fi
}
2023-02-10 14:43:57 +00:00
function runbackup {
if [ "enabled" = true] then
# step 1 : create directory
makedir
# step 2 : wwwbackup
wwwbackup
# step 3 : vhostbackup
vhostbackup
# step 4: logbackup
logbackup
# archive data
echo "Creating backup archive..." >&2
tar -czvf /opt/backify-$timestamp.tar.gz $tmpdir
# push data to server
push
echo "Voila, enjoy the rest of the day" >&2
fi
2023-02-10 14:43:57 +00:00
}
runbackup