#!/bin/bash
#backupftpovh.sh
#***********************************************************************#
# BACKUP SUR FTP OVH par daniel Polli aka Dansteph #
# ------------------ #
# Ce script a lancer en cron tout les deux ou trois jours backup les #
# repertoire "/home" "/usr/local/apache/conf/" et "/var/named" #
# et les envois sur votre espace backup FTP. Editez les paramètres #
# ci-dessous. #
# #
#***********************************************************************#
###############################################################
# PARAMETRES A EDITER
###############################################################
SERVER="ftpback-rbx0-000.ovh.net" #Serveur backup d'OVH
USER="ksXXXXXX.kimsufi.com" #Votre nom d'utilisateur
PASS="XCDCXFDFC" #Votre password
EMAIL="nom@domaine.fr" #Pour envoi mail si backup echoue
MAILSIOK="O" #Mettre "O" si on veut un mail aussi si backup ok
SAVEDIR="/home" #Backup de /home SANS slash a la fin
SAVEDIR1="/usr/local/apache/conf" #Backup optionnel SANS slash a la fin
#SAVEDIR2="/var/named" #Backup optionnel SANS slash a la fin
###############################################################
#autres parametre a éditer seulement par confirmé------------------------
FILENAME=`date +"%d"`_backupsite.tar #nom du fichier "[jour]_backupsite.tar.gz" (.gz est ajouté après)
TEMPDIR="/home/backupsite/" #repertoire temporaire de home pour creation tar
EXCLUDEFILE="/home/backupsite/backup_exclude.txt" #ce fichier doit contenir les rep a exclure du backup
#fin parametres, rien pour vous plus bas---------------------------------
STARTTIME=`date +%s`
#pour traduire les codes d'erreur de ncftpput en texte
declare -a CDERR
CDERR[1]="Could not connect to remote host."
CDERR[2]="Could not connect to remote host - timed out."
CDERR[3]="Transfer failed."
CDERR[4]="Transfer failed - timed out."
CDERR[5]="Directory change failed."
CDERR[6]="Directory change failed - timed out."
CDERR[7]="Malformed URL."
CDERR[8]="Usage error."
CDERR[9]="Error in login configuration file."
CDERR[10]="Library initialization failed."
CDERR[11]="Session initialization failed."
CDERR[142]="Delai depassé pour la connexion."
#envoi des infos sur le log authpriv (le log "secure" sur OVH)
DATE=`date +%H:%M:%S`
logger -p authpriv.info "[$0] -->Debut de backup de $SAVEDIR a $DATE"
echo "[$0] -->Debut de backup de $SAVEDIR a $DATE"
#compression dun ou plusieurs repertoires choisi en parametre
tar cfzX $TEMPDIR$FILENAME.gz $EXCLUDEFILE $SAVEDIR $SAVEDIR1 $SAVEDIR2
RESULT=$?
if [ "$RESULT" != "0" ]; then
DATE=`date +%H:%M:%S`
logger -p authpriv.info "[$0] -->ERREUR TAR à $DATE Backup NON effectué."
echo "[$0] -->ERREUR TAR à $DATE Backup NON effectué."
echo "Erreur TAR le backup FTP sur OVH non effectue" | mail -s 'ERREUR BACKUP FTP OVH' $EMAIL
exit $RESULT
fi
ncftpput -m -u $USER -p $PASS $SERVER "/" $TEMPDIR$FILENAME.gz
RESULT=$?
FILESIZE=`ls -l $TEMPDIR$FILENAME.gz | awk '{print $5}'`
FILESIZE=$(($FILESIZE/1000000))
rm -f $TEMPDIR$FILENAME.gz
if [ "$RESULT" != "0" ]; then
DATE=`date +%H:%M:%S`
logger -p authpriv.info "[$0] -->ERREUR: ${CDERR[$RESULT]} à $DATE Backup NON effectué."
echo "[$0] -->ERREUR: ${CDERR[$RESULT]} à $DATE Backup NON effectué."
echo "[$0] -->ERREUR: ${CDERR[$RESULT]} à $DATE Backup NON effectué." | mail -s 'ERREUR BACKUP FTP OVH' $EMAIL
else
TOTALTIME=$(((`date +%s`-$STARTTIME)/60))
DATE=`date +%H:%M:%S`
logger -p authpriv.info "[$0] -->Fin de backup normal de $SAVEDIR a $DATE. Durée: $TOTALTIME mn. Taille: $FILESIZE Mb"
echo "[$0] -->Fin de backup normal de $SAVEDIR a $DATE. Durée: $TOTALTIME mn. Taille: $FILESIZE Mb"
if [ "$MAILSIOK" = "O" ]; then
echo -e "Backup effectué à $DATE Status: OK\nDurée du backup: $TOTALTIME minutes\nFichier: $FILENAME.gz transféré avec une taille de $FILESIZE Mb" | mail -s 'BACKUP FTP OVH OK' $EMAIL
fi
fi
exit $RESULT