2023-02-10 13:49:35 +00:00
|
|
|
#! /bin/bash
|
|
|
|
|
2023-02-11 10:13:17 +00:00
|
|
|
function init {
|
2023-02-12 12:26:12 +00:00
|
|
|
echo "Backify is starting, looking for configuration file..." >&2
|
2023-02-10 13:49:35 +00:00
|
|
|
|
2023-02-12 12:26:12 +00:00
|
|
|
config='backup.cfg'
|
|
|
|
secured_config='sbackup.cfg'
|
2023-02-10 13:49:35 +00:00
|
|
|
|
2023-02-12 12:26:12 +00:00
|
|
|
if [ ! -f "$config" ]; then
|
2023-02-11 10:45:36 +00:00
|
|
|
echo "Error: Config file not found: $config" >&2
|
|
|
|
echo "Please create a config file or specify the location of an existing file." >&2
|
|
|
|
exit 1
|
2023-02-12 12:26:12 +00:00
|
|
|
fi
|
2023-02-10 13:49:35 +00:00
|
|
|
|
2023-02-12 12:26:12 +00:00
|
|
|
if grep -E -q -v '^#|^[^ ]*=[^;]*' "$config"; then
|
|
|
|
echo "Config file is unclean, cleaning it..." >&2
|
|
|
|
grep -E '^#|^[^ ]*=[^;&]*' "$config" >"$secured_config"
|
|
|
|
config="$secured_config"
|
|
|
|
fi
|
2023-02-10 13:49:35 +00:00
|
|
|
|
2023-02-12 12:26:12 +00:00
|
|
|
source "$config"
|
2023-02-10 13:49:35 +00:00
|
|
|
|
2023-02-12 12:26:12 +00:00
|
|
|
echo "Configuration file loaded" >&2
|
2023-02-10 13:49:35 +00:00
|
|
|
|
2023-02-12 12:26:12 +00:00
|
|
|
if [ "$EUID" -ne 0 ]; then
|
|
|
|
echo "Please run as root"
|
|
|
|
exit
|
|
|
|
fi
|
2023-02-11 10:13:17 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function system {
|
|
|
|
|
2023-02-12 12:26:12 +00:00
|
|
|
if [ -f /etc/redhat-release ]; then
|
2023-02-11 10:45:36 +00:00
|
|
|
echo "Discovered Red Hat-based OS..."
|
|
|
|
system='rhel'
|
2023-02-12 12:26:12 +00:00
|
|
|
elif [ -f /etc/lsb-release ]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
echo "Discovered Debian-based OS..."
|
|
|
|
system='debian'
|
2023-02-11 10:45:36 +00:00
|
|
|
else
|
|
|
|
echo "Error: Unable to detect OS type."
|
|
|
|
exit 1
|
|
|
|
fi
|
2023-02-11 10:13:17 +00:00
|
|
|
|
|
|
|
}
|
2023-02-10 19:33:42 +00:00
|
|
|
|
2023-02-10 14:43:57 +00:00
|
|
|
function makedir {
|
2023-02-12 12:26:12 +00:00
|
|
|
timestamp=$(date +%Y%m%d_%H%M)
|
2023-02-13 14:06:07 +00:00
|
|
|
mkdir -p "$backup_path/backify-$timestamp"
|
2023-02-12 12:26:12 +00:00
|
|
|
tmpdir="$backup_path/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-12 12:26:12 +00:00
|
|
|
if [ "$www_backup" = true ]; then
|
2023-02-10 13:49:35 +00:00
|
|
|
echo "Backing up wwwroot..." >&2
|
2023-02-13 14:06:07 +00:00
|
|
|
mkdir -p "$tmpdir/wwwdata"
|
|
|
|
cp -r "$www_dir/" "$tmpdir/wwwdata/"
|
2023-02-10 13:49:35 +00:00
|
|
|
echo "Finished" >&2
|
2023-02-12 12:26:12 +00:00
|
|
|
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-12 12:26:12 +00:00
|
|
|
if [ "$vhost_backup" = true ]; then
|
2023-02-10 13:49:35 +00:00
|
|
|
echo "Backing up vhosts..." >&2
|
2023-02-13 14:06:07 +00:00
|
|
|
mkdir -p "$tmpdir/vhosts"
|
2023-02-22 17:01:41 +00:00
|
|
|
cp -avr "$vhost_dir/" "$tmpdir/vhosts/"
|
2023-02-10 13:49:35 +00:00
|
|
|
echo "Finished" >&2
|
2023-02-12 12:26:12 +00:00
|
|
|
fi
|
2023-02-10 14:43:57 +00:00
|
|
|
}
|
|
|
|
|
2023-02-11 15:21:46 +00:00
|
|
|
function logbackup {
|
2023-02-12 12:26:12 +00:00
|
|
|
if [ "$log_backup" = true ]; then
|
2023-02-10 14:43:57 +00:00
|
|
|
echo "Backing up system logs..." >&2
|
2023-02-13 14:06:07 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs"
|
2023-02-10 15:51:49 +00:00
|
|
|
|
2023-02-11 15:21:46 +00:00
|
|
|
case $system in
|
2023-02-12 12:26:12 +00:00
|
|
|
"rhel")
|
2023-02-10 15:51:49 +00:00
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[fail2ban]} " ]]; then
|
2023-02-13 14:06:07 +00:00
|
|
|
cp /var/log/fail2ban.log "$tmpdir/syslogs/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[apache]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
mkdir -p "$tmpdir/apachelogs"
|
|
|
|
cp -r /var/log/httpd "$tmpdir/apachelogs"
|
2023-02-13 14:06:07 +00:00
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[nginx]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
mkdir -p "$tmpdir/nginxlogs"
|
|
|
|
cp -r /var/log/nginx "$tmpdir/nginxlogs"
|
2023-02-12 12:26:12 +00:00
|
|
|
fi
|
2023-02-10 15:51:49 +00:00
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[pckg_mngr]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
mkdir -p "$tmpdir/syslogs/yum"
|
|
|
|
cp -r /var/log/yum/* "$tmpdir/syslogs/yum/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[auth]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
cp -r /var/log/auth.log "$tmpdir/syslogs/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[dmesg]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
cp -r /var/log/dmesg "$tmpdir/syslogs/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[dpkg]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
cp -r /var/log/dpkg.log "$tmpdir/syslogs/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[letsencrypt]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
mkdir -p "$tmpdir/syslogs/letsencrypt"
|
|
|
|
cp -r /var/log/letsencrypt/* "$tmpdir/syslogs/letsencrypt/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[php]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
cp -r /var/log/php*.log "$tmpdir/syslogs/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[syslog]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
cp -r /var/log/syslog "$tmpdir/syslogs/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[purge]} " ]]; then
|
2023-02-12 12:26:12 +00:00
|
|
|
echo "Purging logs..." >&2
|
|
|
|
truncate -s 0 /var/log/syslog
|
|
|
|
truncate -s 0 /var/log/message
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[apache]} " ]]; then
|
2023-02-12 12:26:12 +00:00
|
|
|
truncate -s 0 /var/log/httpd/*
|
|
|
|
rm /var/log/httpd/*.gz
|
2023-02-11 10:13:17 +00:00
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[nginx]} " ]]; then
|
2023-02-12 12:26:12 +00:00
|
|
|
truncate -s 0 /var/log/nginx/*
|
|
|
|
rm /var/log/nginx/*.gz
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[fail2ban]} " ]]; then
|
2023-02-12 12:26:12 +00:00
|
|
|
truncate -s 0 /var/log/fail2ban.log
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[pckg_mngr]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
truncate -s 0 /var/log/yum/*
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[auth]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
truncate -s 0 /var/log/auth.log
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[dmesg]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
truncate -s 0 /var/log/dmesg
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[dpkg]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
truncate -s 0 /var/log/dpkg.log
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[letsencrypt]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
truncate -s 0 /var/log/letsencrypt/*
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[php]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
truncate -s 0 /var/log/php*.log
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[syslog]} " ]]; then
|
2023-02-22 16:35:59 +00:00
|
|
|
truncate -s 0 /var/log/syslog
|
|
|
|
fi
|
2023-02-12 12:26:12 +00:00
|
|
|
fi
|
|
|
|
;;
|
2023-02-11 10:13:17 +00:00
|
|
|
|
2023-02-22 16:35:59 +00:00
|
|
|
"debian")
|
2023-02-13 14:06:07 +00:00
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[fail2ban]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
cp /var/log/fail2ban.log "$tmpdir/syslogs/"
|
2023-02-13 14:06:07 +00:00
|
|
|
fi
|
2023-02-11 10:13:17 +00:00
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[apache]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
mkdir -p "$tmpdir/apachelogs"
|
|
|
|
cp -r /var/log/apache2 "$tmpdir/apachelogs"
|
2023-02-12 12:26:12 +00:00
|
|
|
fi
|
2023-02-11 10:13:17 +00:00
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[nginx]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
mkdir -p "$tmpdir/nginxlogs"
|
|
|
|
cp -r /var/log/nginx "$tmpdir/nginxlogs"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[pckg_mngr]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
mkdir -p "$tmpdir/syslogs/apt"
|
|
|
|
cp -r /var/log/apt/* "$tmpdir/syslogs/apt/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[auth]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
cp -r /var/log/auth.log "$tmpdir/syslogs/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[dmesg]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
cp -r /var/log/dmesg "$tmpdir/syslogs/"
|
2023-02-13 14:06:07 +00:00
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[dpkg]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
cp -r /var/log/dpkg.log "$tmpdir/syslogs/"
|
2023-02-13 14:06:07 +00:00
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[letsencrypt]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
mkdir -p "$tmpdir/syslogs/letsencrypt"
|
|
|
|
cp -r /var/log/letsencrypt/* "$tmpdir/syslogs/letsencrypt/"
|
2023-02-12 12:26:12 +00:00
|
|
|
fi
|
2023-02-11 10:13:17 +00:00
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[php]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
cp -r /var/log/php*.log "$tmpdir/syslogs/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[syslog]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
mkdir -p "$tmpdir/syslogs/"
|
|
|
|
cp -r /var/log/syslog "$tmpdir/syslogs/"
|
|
|
|
fi
|
|
|
|
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[purge]} " ]]; then
|
2023-02-12 12:26:12 +00:00
|
|
|
echo "Purging logs..." >&2
|
|
|
|
truncate -s 0 /var/log/syslog
|
|
|
|
truncate -s 0 /var/log/message
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[apache]} " ]]; then
|
2023-02-12 12:26:12 +00:00
|
|
|
truncate -s 0 /var/log/apache2/*
|
|
|
|
rm /var/log/apache2/*.gz
|
2023-02-10 14:43:57 +00:00
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[nginx]} " ]]; then
|
2023-02-12 12:26:12 +00:00
|
|
|
truncate -s 0 /var/log/nginx/*
|
|
|
|
rm /var/log/nginx/*.gz
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[fail2ban]} " ]]; then
|
2023-02-12 12:26:12 +00:00
|
|
|
truncate -s 0 /var/log/fail2ban.log
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[pckg_mngr]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
truncate -s 0 /var/log/apt/*
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[auth]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
truncate -s 0 /var/log/auth.log
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[dmesg]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
truncate -s 0 /var/log/dmesg
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[dpkg]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
truncate -s 0 /var/log/dpkg.log
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[letsencrypt]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
truncate -s 0 /var/log/letsencrypt/*
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[php]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
truncate -s 0 /var/log/php*.log
|
|
|
|
fi
|
2023-02-22 17:01:41 +00:00
|
|
|
if [[ " ${log_to_backup[*]} " =~ " ${log_to_backup[syslog]} " ]]; then
|
2023-02-22 16:30:12 +00:00
|
|
|
truncate -s 0 /var/log/syslog
|
|
|
|
fi
|
2023-02-12 12:26:12 +00:00
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
2023-02-10 14:43:57 +00:00
|
|
|
}
|
|
|
|
|
2023-02-10 15:36:51 +00:00
|
|
|
function push {
|
2023-02-12 12:26:12 +00:00
|
|
|
if [ "$rsync_push" = true ]; then
|
|
|
|
echo "Pushing the backup package to $target_host..." >&2
|
|
|
|
rsync -avz -e "ssh -i $target_key" $backup_path/backify-$timestamp.tar.gz $target_user@$target_host:$target_dir
|
|
|
|
if [ "$push_clean" = true ]; then
|
|
|
|
echo "Removing archive..." >&2
|
2023-02-13 14:06:07 +00:00
|
|
|
rm "$backup_path/backify-$timestamp.tar.gz"
|
2023-02-10 15:36:51 +00:00
|
|
|
fi
|
2023-02-12 12:26:12 +00:00
|
|
|
fi
|
2023-02-10 15:36:51 +00:00
|
|
|
}
|
|
|
|
|
2023-02-10 19:33:42 +00:00
|
|
|
function dockerbackup {
|
2023-02-13 14:06:07 +00:00
|
|
|
if [ "$docker_enabled" = true ]; then
|
|
|
|
if [ "$docker_images" = true ]; then
|
2023-02-12 12:26:12 +00:00
|
|
|
echo "Backing up Docker images..." >&2
|
|
|
|
for i in $(docker inspect --format='{{.Name}}' $(docker ps -q) | cut -f2 -d\/); do
|
|
|
|
container_name=$i
|
|
|
|
echo -n "$container_name - "
|
|
|
|
container_image=$(docker inspect --format='{{.Config.Image}}' $container_name)
|
|
|
|
mkdir -p $tmpdir/containers/$container_name
|
|
|
|
save_dir="$tmpdir/containers/$container_name/$container_name-image.tar"
|
|
|
|
docker save -o $save_dir $container_image
|
|
|
|
echo "Finished" >&2
|
|
|
|
done
|
2023-02-10 19:33:42 +00:00
|
|
|
fi
|
2023-02-12 12:26:12 +00:00
|
|
|
if [ "$docker_volumes" = true ]; then
|
|
|
|
echo "Backing up Docker volumes..." >&2
|
|
|
|
#Thanks piscue :)
|
|
|
|
for i in $(docker inspect --format='{{.Name}}' $(docker ps -q) | cut -f2 -d\/); do
|
|
|
|
container_name=$i
|
|
|
|
mkdir -p $tmpdir/containers/$container_name
|
|
|
|
echo -n "$container_name - "
|
|
|
|
docker run --rm --userns=host \
|
|
|
|
--volumes-from $container_name \
|
|
|
|
-v $backup_path:/backup \
|
|
|
|
-e TAR_OPTS="$tar_opts" \
|
|
|
|
piscue/docker-backup \
|
|
|
|
backup "$tmpdir/containers/$container_name/$container_name-volume.tar.xz"
|
|
|
|
echo "Finished" >&2
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
if [ "$docker_data" = true ]; then
|
|
|
|
echo "Backing up container information..." >&2
|
|
|
|
for i in $(docker inspect --format='{{.Name}}' $(docker ps -q) | cut -f2 -d\/); do
|
|
|
|
container_name=$i
|
|
|
|
echo -n "$container_name - "
|
|
|
|
container_data=$(docker inspect $container_name)
|
|
|
|
mkdir -p $tmpdir/containers/$container_name
|
|
|
|
echo $container_data >$tmpdir/containers/$container_name/$container_name-data.txt
|
|
|
|
echo "Finished" >&2
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
fi
|
2023-02-10 19:33:42 +00:00
|
|
|
}
|
|
|
|
|
2023-02-11 10:49:22 +00:00
|
|
|
function backup_db {
|
2023-02-12 12:26:12 +00:00
|
|
|
if [ "$db_all" = true ]; then
|
|
|
|
if [ "$database_type" = "mysql" ]; then
|
|
|
|
mysqldump -u "$db_username" -p"$db_password" --all-databases >$tmpdir/db/db_all.sql
|
|
|
|
elif [ "$database_type" = "postgresql" ]; then
|
|
|
|
pg_dumpall -U "$db_username" -f $tmpdir/db/db_all.sql
|
2023-02-11 10:58:21 +00:00
|
|
|
fi
|
2023-02-12 12:26:12 +00:00
|
|
|
else
|
|
|
|
if [ "$database_type" = "mysql" ]; then
|
|
|
|
mysqldump -u "$db_username" -p"$db_password" "$db_name" >$tmpdir/db/$db_name.sql
|
|
|
|
elif [ "$database_type" = "postgresql" ]; then
|
|
|
|
pg_dump -U "$db_username" "$db_name" -f $tmpdir/db/$db_name.sql
|
2023-02-11 18:16:15 +00:00
|
|
|
fi
|
2023-02-12 12:26:12 +00:00
|
|
|
fi
|
2023-02-11 10:49:22 +00:00
|
|
|
}
|
|
|
|
|
2023-02-10 14:43:57 +00:00
|
|
|
function runbackup {
|
2023-02-12 12:26:12 +00:00
|
|
|
# init, config check
|
|
|
|
init
|
|
|
|
# run system detection
|
|
|
|
system
|
|
|
|
if [ "$enabled" = true ]; then
|
|
|
|
# step 1 : create directory
|
|
|
|
makedir
|
|
|
|
# step 2 : www backup
|
|
|
|
wwwbackup
|
|
|
|
# step 3 : vhost backup
|
|
|
|
vhostbackup
|
|
|
|
# step 4: log backup
|
|
|
|
logbackup
|
|
|
|
# step 5: docker backup
|
|
|
|
dockerbackup
|
|
|
|
# step 6: db backup
|
|
|
|
if [ "$db_backup" = true ]; then
|
|
|
|
backup_db
|
2023-02-10 15:36:51 +00:00
|
|
|
fi
|
2023-02-12 12:26:12 +00:00
|
|
|
# archive data
|
|
|
|
echo "Creating backup archive..." >&2
|
|
|
|
tar -czvf $backup_path/backify-$timestamp.tar.gz $tmpdir
|
|
|
|
# push data to server
|
|
|
|
push
|
|
|
|
# remove temp files
|
|
|
|
rm -r $tmpdir
|
|
|
|
echo "Voila, enjoy the rest of the day" >&2
|
|
|
|
else
|
|
|
|
echo "Backup is disabled in the configuration" >&2
|
|
|
|
fi
|
2023-02-10 14:43:57 +00:00
|
|
|
}
|
|
|
|
|
2023-02-12 12:26:12 +00:00
|
|
|
runbackup
|