158 lines
4.0 KiB
Bash
Executable File
158 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Pandora FMS Command line Backup Tool
|
|
# (c) Sancho Lerena <slerena@gmail.com>, Pandora FMS 2009-2023
|
|
|
|
function help {
|
|
echo ""
|
|
echo -e "Pandora FMS Command line backup tool. http://www.pandorafms.org"
|
|
echo -e "(c) 2009-2015 Sancho Lerena <slerena@gmail.com>, Pandora FMS"
|
|
echo ""
|
|
echo -e "Syntax:"
|
|
echo -e "\t\t-c Path to Pandora FMS console, p.e: /srv/www/htdocs/pandora_console"
|
|
echo -e "\t\t-d Destination path for backup file. p.e: /tmp"
|
|
echo -e "\t\t-s Source filename for backup restore. p.e: /tmp/pandorafms"
|
|
echo -e "\t\t-f Restore also files"
|
|
echo -e "\t\t-q Quiet. No output message (used for scripts/cron)"
|
|
echo -e "\t\t-b No database backup/restore"
|
|
|
|
echo -e "\n\nPlease BE SURE TO USE RESTORE (-s) option. This will OVERWRITE ALL your"
|
|
echo -e "PandoraFMS install, including files, configuration and data. Please backup first!"
|
|
echo ""
|
|
exit 1
|
|
}
|
|
|
|
if [ $# -eq 0 ]
|
|
then
|
|
help
|
|
fi
|
|
|
|
SOURCEBACKUP="thisnotexist"
|
|
QUIET=0
|
|
RESTOREFILES=0
|
|
DATABASE=1
|
|
TIMESTAMP=`date +"%Y-%m-%d-%H-%M-%S"`
|
|
MDE=1
|
|
|
|
# Main parsing code
|
|
|
|
while getopts "bfhqc:d:s:" optname
|
|
do
|
|
case "$optname" in
|
|
"h")
|
|
help
|
|
;;
|
|
"c")
|
|
PANDORAPATH=$OPTARG
|
|
;;
|
|
"f")
|
|
RESTOREFILES=1
|
|
;;
|
|
"b")
|
|
DATABASE=0
|
|
;;
|
|
"d")
|
|
BACKUPDIR=$OPTARG
|
|
;;
|
|
"s")
|
|
SOURCEBACKUP=$OPTARG
|
|
;;
|
|
"q")
|
|
QUIET=1
|
|
;;
|
|
?)
|
|
help
|
|
;;
|
|
default)
|
|
help
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Execution
|
|
|
|
which mysqldump &>/dev/null
|
|
[ $? -eq 0 ] || MDE=0
|
|
|
|
if [ $MDE == 0 ]
|
|
then
|
|
echo -e "Command Mysqldump not found. \nIn order to make backups it is necessary to have mysqldump on your console.\nAborting..."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -e "$PANDORAPATH/include/config.php" ]
|
|
then
|
|
echo "Cannot read config file at $PANDORAPATH/include/config.php. Aborting"
|
|
exit 1
|
|
fi
|
|
|
|
|
|
DBUSER=`cat $PANDORAPATH/include/config.php | grep dbuser | grep -v "^\/" | grep -o "\=\"[a-zA-Z0-9]*\"" | grep -o "[A-Za-z0-9]*"`
|
|
DBPASS=`cat $PANDORAPATH/include/config.php | grep dbpass | grep -v "^\/" | grep -o "\=\"[a-zA-Z0-9]*\"" | grep -o "[A-Za-z0-9]*"`
|
|
DBHOST=`cat $PANDORAPATH/include/config.php | grep dbhost | grep -v "^\/" | grep -o "\=\"[a-zA-Z0-9]*\"" | grep -o "[A-Za-z0-9]*"`
|
|
DBNAME=`cat $PANDORAPATH/include/config.php | grep dbname | grep -v "^\/" | grep -o "\=\"[a-zA-Z0-9]*\"" | grep -o "[A-Za-z0-9]*"`
|
|
|
|
|
|
cd /tmp
|
|
mkdir $TIMESTAMP
|
|
cd $TIMESTAMP
|
|
|
|
# Make the backup
|
|
|
|
if [ ! -e "$SOURCEBACKUP" ]
|
|
then
|
|
|
|
rm -Rf $BACKUPDIR/pandorafms_backup_$TIMESTAMP.tar.gz 2> /dev/null
|
|
|
|
if [ $DATABASE == 1 ]
|
|
then
|
|
mysqldump -u $DBUSER -p$DBPASS --max_allowed_packet=32M -h $DBHOST $DBNAME > pandorafms_backup_$TIMESTAMP.sql
|
|
tar cvzfh pandorafms_backup_$TIMESTAMP.tar.gz pandorafms_backup_$TIMESTAMP.sql $PANDORAPATH/* /etc/pandora /var/spool/pandora/data_in --exclude .data 2> /dev/null > /dev/null
|
|
else
|
|
tar cvzhf pandorafms_backup_$TIMESTAMP.tar.gz $PANDORAPATH/* /etc/pandora /var/spool/pandora/data_in --exclude .data 2> /dev/null > /dev/null
|
|
fi
|
|
|
|
mv /tmp/$TIMESTAMP/pandorafms_backup_$TIMESTAMP.tar.gz $BACKUPDIR
|
|
cd /tmp
|
|
rm -Rf /tmp/$TIMESTAMP
|
|
if [ $QUIET == 0 ]
|
|
then
|
|
echo "Backup completed and placed in $BACKUPDIR/pandorafms_backup_$TIMESTAMP.tar.gz"
|
|
fi
|
|
|
|
else
|
|
|
|
# Make the backup restore process
|
|
|
|
echo "Detected Pandora FMS backup at $SOURCEBACKUP, please wait..."
|
|
tar xvzf $SOURCEBACKUP > /dev/null 2> /dev/null
|
|
|
|
if [ $DATABASE == 1 ]
|
|
then
|
|
echo "Dropping current database"
|
|
echo "drop database $DBNAME;" | mysql -u $DBUSER -p$DBPASS -h $DBHOST
|
|
|
|
echo "Restoring backup database"
|
|
echo "CREATE DATABASE $DBNAME;" | mysql -u $DBUSER -p$DBPASS -h $DBHOST
|
|
cat *.sql | mysql -u $DBUSER -p$DBPASS -h $DBHOST -D $DBNAME
|
|
fi
|
|
|
|
if [ $RESTOREFILES == 1 ]
|
|
then
|
|
echo "Restoring files and configuration"
|
|
cp -R var/spool/pandora/* /var/spool/pandora
|
|
cp -R etc/pandora/* /etc/pandora
|
|
BACKUPBASEPATH="`echo $PANDORAPATH | cut -c2-`"
|
|
cp -R $BACKUPBASEPATH/* $PANDORAPATH
|
|
|
|
fi
|
|
|
|
cd /tmp
|
|
rm -Rf /tmp/$TIMESTAMP
|
|
|
|
echo "Done. Backup in $SOURCEBACKUP restored"
|
|
fi
|
|
|
|
|
|
exit 0
|