SUNScholar/Disaster Recovery/Backups/Local

From Libopedia
Jump to navigation Jump to search

Here is a sample script to make local backups which are then sent to the remote backup server.

Type the following.

sudo nano /usr/local/bin/backup.sh

Now copy and paste the following into the open editor and modify the backup variables to suit your location and server.

#!/bin/bash

## Setup the backup variables ##
LOCAL_SERVER="etd.sun.ac.za"
LOCAL_FOLDER="/var/backup"  
BACKUP_LOGFILE="/var/log/backup.log"
# Day Of the Week
DOW=`date +%a`
TIME=`date`

{
## Timestamp the beginning of the backup ##
echo "Backup for $LOCAL_SERVER started: $TIME"

## Check that we have a backup folder ##
if [ ! -d $LOCAL_FOLDER ]; then
  mkdir -p $LOCAL_FOLDER
  echo "New backup folder created"
  else
  echo "Backup started: $TIME"
fi

## Make sure we're in / since backups are relative to that ##
cd /

## Get a list of the installed software ##
dpkg --get-selections > $LOCAL_FOLDER/installed-software.$DOW

## Backup the server config files ##
echo "Archive '/etc' folder"
tar czf $LOCAL_FOLDER/etc.tgz.$DOW etc/

## Backup the '/root' folder ##
echo "Archive '/root' folder"
tar czf $LOCAL_FOLDER/root.tgz root/

## Backup the '/usr/local' folder which houses customised software ##
echo "Archive '/usr/local' folder"
tar czf $LOCAL_FOLDER/usr-local.tgz usr/local/

## Backup the Dspace postgres database which houses the catalog of the digital assets ##
su - postgres -c "pg_dump dspace > /tmp/dspace-db.sql"
cp /tmp/dspace-db.sql $LOCAL_FOLDER/dspace-db.sql-$DOW
su - postgres -c "vacuumdb --analyze dspace > /dev/null 2>&1"

## View the backup folder ##
ls -lhS $LOCAL_FOLDER

## Timestamp the end of the backup ##
TIME=`date`
echo "Backup for $LOCAL_SERVER ended: $TIME"
} > $BACKUP_LOGFILE

## Make a daily copy of the backup log file ##
cp $BACKUP_LOGFILE $BACKUP_LOGFILE.$DOW

## Email the backup logfile to the root user ##
cat $BACKUP_LOGFILE.$DOW | mail -s "Daily backup log from $HOSTNAME" root

### EOF ###

NANO Editor Help
CTL+O = Save the file and then press Enter
CTL+X = Exit "nano"
CTL+K = Delete line
CTL+U = Undelete line
CTL+W = Search for %%string%%
CTL+\ = Search for %%string%% and replace with $$string$$
CTL+C = Show line numbers

More info = http://en.wikipedia.org/wiki/Nano_(text_editor)


Now we make the backup script executable.

sudo chmod 0755  /usr/local/bin/backup.sh

Invoke Local Manual Backup

After you have completed the above, you can start a backup anytime by typing the following as the root user:

sudo /usr/local/bin/backup.sh

Then check the files in the backup folder by typing the following:

sudo ls -lh /var/backup

Setup Daily Backup Job

A cron job entry is added to the root crontab to run the script at midnight each day. To add the script to the root crontab type the following as the root user:

sudo crontab -e
@midnight /usr/local/bin/backup.sh

NANO Editor Help
CTL+O = Save the file and then press Enter
CTL+X = Exit "nano"
CTL+K = Delete line
CTL+U = Undelete line
CTL+W = Search for %%string%%
CTL+\ = Search for %%string%% and replace with $$string$$
CTL+C = Show line numbers

More info = http://en.wikipedia.org/wiki/Nano_(text_editor)


Back to Disaster Recovery Backups