Aller au contenu | Aller au menu | Aller à la recherche

Site membre du réseau Izardev et LCNET

Script de backup FTP (OVH)

La planification de sauvegardes est une des composantes essentielles de l'hébergement de service, qu'il s'agisse de sites internet ou de tout autre service hébergé.

Notez que cet article précise "OVH" car OVH propose gratuitement la mise en place d'un serveur de backup FTP à tous ses locataires de serveur. Les transferts sont extraordinairement rapides. On peut utiliser parallèlement d'autres techniques de sauvegarde comme RSYNC, qui permet d'effectuer des sauvegardes incrémentales. Cela fera sans doute l'objet d'un prochain article.

Création du fichier de script de backup

Ce script va effectuer une sauvegarde des bases de données et du dossier des sites (/var/www sous linux Debian par défaut) et transfert cette sauvegarde sur un serveur FTP. Vous pouvez envisager de sauvegarder un autre dossier si vos sites ne sont pas dans celui-ci (/home/ pour les releases OVH, mais vous sauvegarderez également les mails etc.)

Fichier save.sh :

#!/bin/bash

##################################################
# Ce script effectue une sauvegarde des bases de
# données et du dossier des sites et transfert
# cette sauvegarde sur un serveur FTP
##################################################

##############################################
# Variables à modifier
##############################################

#hote FTP
FTP_SERVER="ftpback-rbx2-XXX.ovh.net"  
#login FTP 
FTP_LOGIN="nsXXXXXX.ovh.net"     
#pass FTP              
FTP_PASS="XXXXXXXXX"                                   
#Utilisateur MySQL
MUSER="XXXXXXXX"   
#pass MySQL                                                 
MPASS="XXXXXXXX"
#hote MySQL                                           
MHOST="localhost"
#Dossier à sauvergarder (dossier dans lequel les sites sont placés)
DIRSITES="/var/www/"

##############################################
# dossiers temporaires crées (laissez comme ça, ou pas)
##############################################

#Dossier de sauvegarde temporaire des dumps sql
DIRSAVESQL="backups/sql"
#Dossier de sauvegarde temporaire des sites
DIRSAVESITES="backups/sites"


##############################################
#
##############################################
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
GZIP="$(which gzip)"
TAR="$(which tar)"
DBS="$(mysql -u $MUSER -h $MHOST -p$MPASS -Bse 'SHOW DATABASES')"
DATE_FORMAT=`date +%Y-%m-%d`  

if [ ! -d $DIRSAVESITES ]; then
  mkdir -p $DIRSAVESITES
else
 :
fi
if [ ! -d $DIRSAVESQL ]; then
  mkdir -p $DIRSAVESQL
else
 :
fi

echo "Sauvegarde des bases de données :"
for db in $DBS
do
    echo "Database : $db"
        FILE=$DIRSAVESQL/mysql-$db-$DATE_FORMAT.gz
        `$MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE`
done

echo "Creation de l'archive des dumps"
`$TAR -cvzf base-$DATE_FORMAT.tar.gz $DIRSAVESQL`

echo "Création de l'archive des sites"
`$TAR -cvzf sites-$DATE_FORMAT.tar.gz $DIRSITES`

echo "Connexion au serveur FTP et envoi des données"
ftp -n $FTP_SERVER <<END
        user $FTP_LOGIN $FTP_PASS
        put base-$DATE_FORMAT.tar.gz /base-$DATE_FORMAT.tar.gz
        put sites-$DATE_FORMAT.tar.gz /sites-$DATE_FORMAT.tar.gz
        quit
END

echo "Suppression de l'archive de sauvegarde SQL"
rm -Rf $DIRSAVESQL
rm base-$DATE_FORMAT.tar.gz
echo "Suppression de l'archive de sauvegarde des sites"
rm -R $DIRSAVESITES
rm sites-$DATE_FORMAT.tar.gz

Il ne reste plus maintenant qu'à mettre en place une tâche CRON, afin d'automatiser la tâche et le tour est joué.

Bonnes sauvegardes ;-)

Partagez cet article !

  • Delicious
  • Stumbleupon
  • Digg
  • Facebook
  • Google
  • Linkedin
  • Yahoo Buzz
  • Twitter
Vous avez apprécié cet article ?

Commentaires S'abonner au flux RSS des commentaires

  1. Sylvain Cohen | FTP |
    Il vaut mieux ajouter binary dans le ftp, sinon le fichier peux etre corompu

    ftp -n $FTP_SERVER <<END
    user $FTP_LOGIN $FTP_PASS
    binary
    put base-$DATE_FORMAT.tar.gz /base-$DATE_FORMAT.tar.gz
    put sites-$DATE_FORMAT.tar.gz /sites-$DATE_FORMAT.tar.gz
    quit
    END
  2. Ta variable "DIRSAVESITES="backups/sites" ne sert à rien dans ton script vu que tu n'y mets rien.

    Le rm -rf n'est pas terrible aussi.
  3. Good Script, but at the end of FTP commands replace END with EOF otherwise the script will terminate.

Ajouter un commentaire

Les commentaires sont tous validés par un modérateur, votre commentaire n'apparaît pas directement sur le site.
Aucun support n'est assuré ici, vous pouvez néanmoins laisser vos remarques et critiques sur l'article, les points de vue pertinents sont toujours les bienvenus.