#!/bin/bash
# Script for Backup tar.gz direcotories
# Using eiter FTP or SFTP
#
# Requierments
#
# -ncfpt
# -scp
# -tar
#########################################
# Written by: Guillermo Garron
# Contact at: http://www.go2linux.org/email.html
# Release 0.1
# Web Page: http://linux.go2linux.org
# 
#########################################
#########################################
# Configuration section
# Change the variables here to fit your needs
#####
# FTP or SCP; select the one to prefer to use
METHOD="ftp"

####
# Server; Change to the server on which to want to
# store the backup
SERVER="ftp.server.com"

####
# Directory to backup; The directory or directories
# to be backed up (spacer separeted)
B_DIRECTORY="/home/user"

####
# User; Here put the username you use to log into
# server named above
USER_NAME="anonymous"

####
# Password; Here write down the secret password
# you use to log into the server
SECRET="password"

####
# Remote directory; Put here the directory in the
# remote server where you can write your backup
R_DIRECTORY="/home/user"

####
# Admin email; Put here the email of the person who
# should receive the reports
ADMIN_EMAIL="admin@server.com"

####
# FTP port; Here put the port where ftp listens in 
# your ftp server
FTP_PORT=21

####
# SSH port; Here goes the ssh port if you use sftp
# instead of ftp
SSH_PORT=22

####
# Command locations; where your commands are, use which
# command to find them
NCFTPPUT="/usr/bin/ncftpput"
TAR="/bin/tar"
MAIL="/usr/bin/mail"
SCP="/usr/bin/scp"

#########################################
# Program section
#########################################
FILE="backup.$(date +"%y-%m-%d").tar.gz"
OUTDIR="/tmp"
FILE_TO_GO="$OUTDIR/$FILE"
EMAIL_FILE="$OUTDIR/email.txt"

$TAR -zcf $FILE_TO_GO $B_DIRECTORY

if [ $METHOD = "ftp" ]
then
	$NCFTPPUT -m -z -u "$USER_NAME" -p "$SECRET" -P "$FTP_PORT" "$SERVER" "$R_DIRECTORY" "$FILE_TO_GO"
	EXIT_V="$?"
	case $EXIT_V in
		0) O="Success.";;
		1) O="Could not connect to remote host.";;
		2) O="Could not connect to remote host - timed out.";;
		3) O="Transfer failed.";;
		4) O="Transfer failed - timed out.";;
		5) O="Directory change failed.";;
		6) O="Directory change failed - timed out.";;
		7) O="Malformed URL.";;
		8) O="Usage error.";;
		9) O="Error in login configuration file.";;
		10) O="Library initialization failed.";;
		11) O="Session initialization failed.";;
	esac
else
	$SCP "$FILE_TO_GO" "$USER_NAME"@"$SERVER":/"$R_DIRECTORY"
	EXIT_V="$?"
	case $EXIT_V in
		0) O="Success";;
		1) O="Error";;
	esac
fi
touch $EMAIL_FILE
echo "Backup result = $O" >> $EMAIL_FILE
echo "Date $(date)" >> $EMAIL_FILE
$MAIL -s "$(hostname) Backup" $ADMIN_EMAIL < $EMAIL_FILE
rm -f $FILE_TO_GO
rm -f $EMAIL_FILE
