| Sommaire: |
| Introduction |
OVH mets gratuitement à disposition au locataire de serveurs un espace FTP de backup. (pour accéder à cet espace il faut ouvrir le compte voir "backup FTP" dans votre manager) Le but de cette doc est de vous aider à mettre en place un backup automatique de votre serveur sur le backup FTP d'OVH. La doc est clairement orientée pour les (relativement) débutants avec une section pour que les confirmés ne s'em... pas à tout lire. Les possibilités de ce backup: Le principe: Un tache CRON lance le script shell "backupftpovh.sh" qui va archiver et compresser les trois répertoires les plus important "/home" "/usr/local/apache/conf" et "/var/named" en excluant "/home/ovh" et "/home/log/". Le backup étant Lancé toujours les même jour du mois et le nom de l'archive contenant la date du jour (1,4,8...) les backup seront remplacés chaque mois par le nouveaux, vous conservez ainsi en permanence 4, 8 ou même 30 backup par mois à votre convenance. Notez que l'archive transferée ou non est supprimée de votre disque dur à la fin du script. Une trace dans le log "secure" vous indique le début et la fin du backup et un mail vous est envoyé si le backup échoue. Optionellement (activé par défaut) vous pouvez recevoir aussi un mail vous indiquant quand le backup s'est bien terminé, la durée du backup et la taille de l'archive crée. Pourquoi cette doc et ce script? Comme tout le monde j'ai du me gratter la tête aucune solution n'étant fournie "clé en mains" pour le backup FTP. J'ai bien trouvé quelques scripts de ci de la mais certains étaient des usines à gaz et les autres n'incluaient aucun contrôles d'execution ou d'erreur. Le jour ou le disque lache il est un peut tard pour s'apercevoir que le backup ne marchait plus depuis 6 mois. J'ai donc d'abord fait ce script pour moi et comme la fourmi est décidement préteuse j'ai décider de partager. Le backup est souvent négligé peut-être par manque de connaissances et c'est une grave erreur. J'aurais pu pousser et faire un script beaucoup plus complexe entièrement parametrable pour satisfaire même ceux qui ont des installations spéciale mais ca aurait été l'inverse du but cherché: une application simple à installer et utiliser et surtout avec un contrôle fiable de la bonne execution. Ce script étant assez simple il peut aussi vous servir de base pour ecrire un script plus évolué qui correspondra mieux à vos besoins. |
| Installation pour les confirmés |
0Testez dabord la taille prevue pour un backup avec df qui vous donnera la taille utilisée de /home et la place restante. L'archive sera effacée une fois envoyée mais évidemment elle doit pouvoir rentrer dans /home. Comptez donc 75% de "used" et regarder si ca rentre dans "available". 1Créez un répertoire "backupsite" dans "/home" 2Importez le fichier "backup_exclude.txt" dans "/home/backupsite" : wget http://www.dansteph.com/backup_exclude.txt 3Importez le script ou vous voulez: wget http://www.dansteph.com/backupftpovh.sh 4N'oubliez pas de le chmoder en rwx------ 5Editez "backupftpovh.sh" pour mettre vos données serveur username et password. 6Programmer le lancement en cron de ce script toujours les même jours chaque mois (le 1 du mois puis le 5, le 9, le 13 etc. etc. la fréquence dépend de la place sur votre espace FTP et de la taille des backups, vous pouvez le lancer une fois pour tester la taille: sh backupftpovh.sh) |
| Installation détaillées pour les débutants | ||
0Connectez vous en root en SSH avec putty ou autre programme. (si vous ne savez pas le faire c'est mal barré :) ) 1Testez dabord la taille prevue pour un backup en tapant df qui vous donnera la taille utilisée de /home et la place restante. L'archive sera effacée une fois envoyée mais évidemment elle doit pouvoir rentrer dans /home. Comptez donc 75% de "used" et regarder si ca rentre dans "available". 2Allez dans le repertoire home en tapant: cd /home 3Crée le répertoire "backupsite" en tapant: mkdir backupsite 4Allez dans le répertoire /home/backupsite en tapant: cd /home/backupsite 5Importer le fichier d'exclusion en tapant: wget http://www.dansteph.com/backup_exclude.txt 6Tapez: ls vous devez avoir ce fichier backup_exclude.txt dans le répertoire "/home/backupsite" Note: On va crée un répertoire dans /usr pour mettre le script dedans, vous pouvez mettre le script ailleurs si vous avez déjà une place dédiée a vos scripts. Toutefois dans la doc je suppose qu'il s'agit d'un répertoire "/usr/mes_scripts" et je me réfère tjrs à ce répertoire, tenez en compte si vous mettez le script ailleurs. 7Allez dans le repertoire Usr en tapant: cd /usr 8Crée le répertoire "mes_scripts" en tapant: mkdir mes_scripts 9Allez dans le répertoire "/usr/mes_scripts" en tapant: cd /usr/mes_scripts 10Importer le script shell en tapant: wget http://www.dansteph.com/backupftpovh.sh 11Tapez: ls vous devez avoir ce fichier backupftpovh.sh dans le répertoire "/usr/mes_scripts" 12Changez les droits de ce fichier en tapant: chmod a-r-w-x,u+rwx backupftpovh.sh (vous devez être connecté en root absolument) 13Editez ce script en tapant: vi backupftpovh.sh appuyez sur la touche insert, et entrez vos données serveurs dans la partie:
14Pressez sur la touche escape et tapez :wq puis la touche "entrée", vous devez être de retour dans le shell et vos modifs doivent être sauvée. 15Vous pouvez maintenant lancer le backup manuellement pour voir la taille que prendra chaque backup et pour tester l'installation, attention ca risque de durer 10-20mn suivant la place de vos fichiers. Tapez: sh backupftpovh.sh pour l'executer sinon passez à l'étape suivante. 16Il faut choisir à quel fréquence vous voulez que votre backup soit effectué. Ca dépend de la place sur votre FTP (en général la même que le HD de votre serveur), de la taille de vos sauvegardes et si vous faite de fréquent changement. Rapellez vous que vos backup seront conservé un mois, ca fait en gros 8 backup par mois si vous en faite un tout les 4 jours, 4 si une fois par semaine etc. etc. Dans mon cas pour une sauvegarde à 1.4 GO avec une place de 40GB sur le FTP j'ai choisi un backup tout les 4 jours à cause des forums et autres bases. 17Il faut maintenant configurer une tache CRON pour lancer votre backup: lancer WEBMIN allez dans "Systèmes" puis en bas dans "Tâches CRON" cliquez sur "Créer une nouvelle tâche cron programmée". puis renseignez les différents champs comme indiqué dans l'image en dessous en choisissant la fréquence désirée, une fois pas semaine, tout les deux jours etc etc. Pour ne pas trop charger la machine au heures de pointes evidemment executer plutôt le backup la nuit. Exemple de lancement tout les 4 jours:
![]() |
| Questions fréquente et réponses | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Le listing du script |
Je vous déconseille fortement de copier ce listing pour utilisation, ca ne marchera pas à cause des quelques saut de lignes. Suivez plutôt l'installation plus haut. |
#!/bin/bash
#***********************************************************************#
# 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="XXX.XXX.XXX.X" #Serveur backup d'OVH
USER="XXX" #Votre nom d'utilisateur
PASS="XXX" #Votre password
EMAIL="XXX@XXX.com" #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
TEMPDIR="/home/backupsite/" #repertoire temporaire de home
EXCLUDEFILE="/home/backupsite/backup_exclude.txt" #ce fichier doit contenir ...
#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
|
| Contact et auteur | |
|
Daniel Polli aka Dansteph http://orbiter.dansteph.com http://www.fspassengers.com http://www.laboiteabroderie.com contact: daniel at dansteph.com ou sur le formulaire de contact ici: http://orbiter.dansteph.com |
|
page vue 7677 fois | |