Script de backup sauvegarde mysql par ftp

Voici un petit script pour sauvegarder toutes vos bases de données mysql puis les envoyé sur un ftp.
Le tout en gardant seulement un certains nombre de jours de backup.

J’utilise yafc pour le ftp, si vous ne l’avez pas:

Aptitude install yafc

Ensuite voici le script:

mkdir /cron
nano /cron/script_backup_mysql.sh

Le script en lui même !

#!/bin/bash
#Backup mysql par ftp
Mysql_User="root"
Mysql_Paswd="password-sql"
Mysql_host="localhost"
# Emplacemment des different prog utilisé, laisser tel quel si vous n'avez rien bidouillé
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"

# Emplacemment du dossier de backup local
DEST="/home/archives/backup/"

#Rep ou on fou le sql
DEST_mysql="$DEST/mysql"

#Date du jour
NOW="$(date +"%d-%m-%Y")"

# Databases a ne pas sauvegarder separer par des espaces
IGGY=""

# On initialise les variables
FILE=""
DBS=""

#on cree le rep
[ ! -d $DEST_mysql ] && mkdir -p $DEST_mysql || :

#On limite l'acces au root uniquemment
#$CHOWN 0.0 -R $DEST_mysql
#$CHMOD 0600 $DEST_mysql

# On liste les bases de donnees
DBS="$($MYSQL -u $Mysql_User -h $Mysql_host -p$Mysql_Paswd -Bse 'show databases')"

for db in $DBS
do
    skipdb=-1
    if [ "$IGGY" != "" ];
    then
        for i in $IGGY
        do
            [ "$db" == "$i" ] && skipdb=1 || :
        done
    fi

    if [ "$skipdb" == "-1" ] ; then
        FILE="$DEST_mysql/$db.$NOW.gz"
        # On boucle, et on dump toutes les bases et on les compresse
        $MYSQLDUMP -u $Mysql_User -h $Mysql_host -p$Mysql_Paswd $db | $GZIP -9 > $FILE
    fi
done

#BACKUP des bases mysql par FTP
#nbre de jour de backup a conserver
j=7
j_a_delete=$(date +%d-%m-%Y --date "$j days ago")

## Conf des rep de backup pour le ftp
DIR_BACKUP_mysql=$DEST_mysql
DIR_DIST_BACKUP_mysql='/BACKUP/mysql/'

#Configuration de pass ftp
loginftp="login"
motdepassftp="pass"
host_ftp="dedibackup.dedibox.fr"

## Upload sur le ftp
yafc $loginftp:$motdepassftp@$host_ftp <<**
cd $DIR_DIST_BACKUP_mysql
lcd $DIR_BACKUP_mysql
mkdir $NOW
cd $NOW
put -r *
cd ..
rm -r $j_a_delete
bye
**

#On delete tout
cd $DEST_mysql
rm -r *

Enregistrez ensuite le fichier et donnez lui des droits d’execution:

chmod u+x /cron/script_backup_mysql.sh

Et voila, il ne vous reste plus qu’a mettre ceci dans une tache cron

crontab -e

Puis ajoutez ceci

34 06 * * * /cron/backup-mysql-ftp.sh >> /cron/save-mysql.log

Pour que votre script soit executé chaque jour à 6h34, et le log sauvé dans /cron/save-mysql.log ( à créer) ;-)

Réseaux sociaux :
  • Bluegger
  • Blogasty
  • Fuzz
  • Scoopeo
  • del.icio.us

12 commentaires

  1. Fumble nous disait le December 13th, 2006 at 13:57 :

    Bonjour,

    Je tenais à vous remercie pour le script. C’est exactement ce que je cherchaus et il marche très bien.

    Félicitations ;)

  2. Fumble nous disait le December 13th, 2006 at 13:58 :

    Damned, ne faites pas attentions aux fautes ;)

  3. sidhannowe nous disait le December 13th, 2006 at 19:03 :

    Pareil, impec ce script ! C’est ce qu’il me fallait.

  4. admin nous disait le December 13th, 2006 at 20:45 :

    Content que ca serve ;)
    ++

  5. SnorkY nous disait le December 19th, 2006 at 15:37 :

    Merci pour ce script, c’est génial ! ;)

  6. creation site grenoble nous disait le April 9th, 2007 at 20:44 :

    Merci pour ce script, vraiment simpa et simple de compréhension :)

  7. Alpha nous disait le April 10th, 2007 at 15:18 :

    Chapeau Admin et grand merçi

  8. Import et export mysql en ligne et encodage nous disait le December 6th, 2007 at 23:39 :

    [...] autres posts sur ce sujet: Pour faire des sauvegardes massive mysql avec une tache cron et les envoyer sur un ftp Pour régler des problèmes d’encodage suite au passage à mysql5 par exemple et cette fois [...]

  9. pablo nous disait le December 28th, 2007 at 12:57 :

    Propre et rapide :), j’aime beaucoup, juste une petite sur le cron :

    Remplacer:

    34 06 * * * /cron/backup-mysql-ftp.sh >> /cron/save-mysql.log

    Par :

    34 06 * * * /cron/script_backup_mysql.sh >> /cron/save-mysql.log

  10. Billets Intéressants | Php-Developpeur nous disait le January 27th, 2008 at 11:21 :

    [...] http://www.billyboylindien.com/blog/linux/script-de-backup-mysql-par-ftp/ [...]

  11. Eric nous disait le April 7th, 2008 at 1:11 :

    Bonjour,

    Merci pour ce script que je devais installer depuis tres longtemps …
    Maintenant, je suis plus tranquille grace a toi !!!

    MERCI encore
    Eric

  12. fdez nous disait le July 10th, 2008 at 15:52 :

    Bravo pour ce script.
    Simple et efficace.
    Nous attendons d’autre chef d’oeuvre de toi.
    Merci pour ce magnifique travail

Commenter