Backup FTP OVH

De Marmits Wiki
#!/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

Procédure de Backup serveur dédié OVH sur le backup FTP ovh.

Créer un répertoire pour lancer le script par exemple: rep "scripts" (drwx------  2 root  root)
/home/personne/scripts/backupftpovh.sh (-rwx------ 1 root  root)

Créer un répertoire pour accueillir l'archive compressée du backup:
/home/backupsite/ (drwxr-xr-x  2 root  root)

Créer un fichier dans /home/backupsite/backup_exclude.txt (-rw-r--r--  1 root root) contenant:
/home/backupsite
/home/ovh
/home/log

pour lancer le script:
/home/personne/scripts/backupftpovh.sh
intégrer dans une tâche CRON.
---------------------------------------------------------------------------------------------

Pour se connecter sur le serveur FTP OVH
en SSH lancer:
ncftp
puis:
ncftp> open -u ksXXXXXX.kimsufi.com -p password ftpback-rbx3-150.ovh.net
ensuite on peut faire des "ls" des "rm".

---------------------------------------------------------------------------------------------
pour envoyer directement l'archive.

ncftpput -m -u ksXXXXXX.kimsufi.com -p password ftpback-rbx3-150.ovh.net "/" /home/backupsite/09_backupsite.tar.gz