Back up script that sends tarred files to remote server using ftp

#!/bin/bash

# crontab entry : 0 0 * * * /usr/local/scripts/databackup.sh
# or softlink in cron.daily : ln -s /usr/local/scripts/databackup.sh
# or softlink in cron.weekly : ln -s /usr/local/scripts/databackup.sh
# Back up data to remote server using ftp
# set -x

PATH=/bin:/usr/bin:/sbin:/usr/sbin
export PATH

# Specify Ftp details
FTPUSER="USERNAME"
FTPPASS="PASSWORD"

# location of binaries
GREP=`which grep`
MAIL=`which mail`
YUM=`which yum`
MKTEMP=`which mktemp`
TAR=`which tar`
FTP=`which ftp`
SEQ=`which seq`

# remote back up server
RHOST=REMOTE HOST
# mail address and servername
HOST=`hostname`
# fill in mail address
ADMIN=EMAIL ADDRESS
# logfile
LOG="/tmp/backup.log"
# tmp back up dir
BACKUPDIR="/tmp"
# base dir
BASEDIR="/home"

# clean up
> $LOG
> /tmp/folders.list
# start timestamp log
echo "Starting back up sequence" >> $LOG
date >> $LOG

# Check if back up server is up (this may be added later on)

# What folders need to be back upped:
FOLDERS=`ls /home > /tmp/folders.list`

a=( $( cat /tmp/folders.list ) )

for i in $($SEQ 0 $((${#a[@]} - 1)))
do
        echo ${a[$i]} >> $LOG
        tar Ppczf $BACKUPDIR/backup-${a[$i]}-`date +%m%d%Y`.tar.gz $BASEDIR/${a[$i]}
done

ftp -n -v $RHOST << EOT binary user $FTPUSER $FTPPASS prompt cd $HOST lcd $BACKUPDIR mput backup-*-`date +%m%d%Y`.tar.gz bye EOT # end timestamp log date >> $LOG
echo "Ending back up sequence" >> $LOG

cat $LOG | mail -s "Backup log for $HOST" $ADMIN
Author: michael schouman on September 22, 2011
Category: Code snippets

Leave a Reply

Last articles