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 ;-)













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
Le rm -rf n'est pas terrible aussi.