Backup Guide for Cacti
Cacti Backup Guide
This guide describes a short how-to for backing up all essential cacti files.
[the_ad_placement id=”default-manual”]
Generic Information
This section provides an overview on what should be backed up as well as the script and cron jobs being used
What to Backup:
The goal of the backup is to have a full working Cacti installation restored as fast as possible. Therefore the following configuration files and directories should be included:
- Apache configuration
- PHP configuration
- Cacti Cronjob
- Full Cacti directory
- Backup script
- If installed: Spine
In addition to these files, the following database needs to be saved:
- cacti
Backup Script:
The passwords have been changed to “xxx”.
#!/bin/bash
# Urban-Software.de
# Database Backup Script
# Set the backup filename and directory
DATE=`date +%Y%m%d` # e.g 20130721
FILENAME="cacti_database_$DATE.sql";
TGZFILENAME="cacti_files_$DATE.tgz";
BACKUPDIR="/backup/";
# Database Credentials
DBUSER="cactiuser";
DBPWD="xxx";
DBNAME="cacti";
# FTP Backup Server credentials
FTPHOST="127.0.0.1";
FTPUSER="cacti";
FTPPWD="xxx";
echo "Creating Cacti backup for [$DATE]"
# Where is our gzip tool for compression ?
# The -f parameter will make sure that gzip will
# overwrite existing files
GZIP="/bin/gzip -f";
# What files do we want to include ?
# Change the directories accordingly !
TARINCLUDE="./var/www/html
./etc/cron.d/cacti
./etc/php.ini
./etc/php.d
./etc/httpd/conf
./etc/httpd/conf.d
./usr/local/spine/etc/spine.conf
./usr/local/spine"
# Which files/directories do we want to EXCLUDE ?
TAREXCLUDE="./var/www/html/log"
# Delete old database backups older than 3 days
find /backup/cacti_database*.sql.gz* -mtime +3 -exec rm {} \;
find /backup/cacti_files*.tgz* -mtime +3 -exec rm {} \;
# Change to the root directory
cd /
# execute the database dump
mysqldump --user=$DBUSER --password=$DBPWD --add-drop-table --databases $DBNAME > $BACKUPDIR$FILENAME
# compress the database backup
$GZIP $BACKUPDIR$FILENAME
# Create the Cacti files backup
tar -czpf $BACKUPDIR$TGZFILENAME $TARINCLUDE
# Generate MD5 crc
md5sum $BACKUPDIR$TGZFILENAME > $BACKUPDIR$TGZFILENAME.md5
md5sum $BACKUPDIR$FILENAME.gz > $BACKUPDIR$FILENAME.gz.md5
# Uncomment the following to enable FTP upload
exit
# Upload to FTP server (on a SCP server, the transfer could be verified
# By a md5sum execution on the remote system with a comparison of the 2 files afterwards
ftp -inv $FTPHOST << EOF
user $FTPUSER $FTPPWD
bin
put $BACKUPDIR$TGZFILENAME.md5 $TGZFILENAME.md5
put $BACKUPDIR$FILENAME.gz.md5 $FILENAME.gz.md5
put $BACKUPDIR$TGZFILENAME $TGZFILENAME
put $BACKUPDIR$FILENAME.gz $FILENAME.gz
bye
EOFBackup Cronjob:
The following lines have been added to /etc/cron.d/cacti:
# Cacti Backup Schedule 0 2 * * * root /bin/bash /backup/cacti_backup.sh &>/backup/backup.log
Restore Procedures
Follow these steps in order to restore your Cacti system:
- Create a new System with all pre-requirements satisfied ( php, mysql, apache installed, basic Cacti )
- Fetch your latest backup files ( files + database ) and put it into the tmp directory
- Drop and Re-Create a the cacti database and add the cacti user with your DB credentials ( change xxx to match your current database user/password):
mysql –p > CREATE DATABASE cacti; > GRANT ALL PRIVILEGES ON cacti.* TO cacti@localhost IDENTIFIED BY “xxx”; > FLUSH PRIVILEGES;
- Execute the following commands:
cd / tar –xzvf /tmp/cacti_files_yyyymmdd.tgz cd /tmp/ gunzip /tmp/cacti_database_yyyymmdd.sql.gz mysql –u cacti –p cacti < /tmp/cacti_database_yyyymmdd.sql
