Script de backup sauvegarde mysql par ftp

Posté le 4 sept, 2006 dans debian, dedibox, linux | 23 Commentaires

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

mots clefs relatifs : script sauvegarde mysql | script backup mysql | sauvegarde mysql | dedibox sauvegarde cron | sauvegarder automatique mysql linux | script de sauvegarde de bdd mysql | script de sauvegarde mysql | script ftp linux | script sauvegarde ftp | backup mysql scripts ftp | bash ftp script mkdir | cron backup script | cron sauvegarde base | linux ftp mkdir | mysql ftp backup | mysql sauvegarde | mysqldump ftp | script bash sauvegarde mysql | script de backup dedibox | apache2+location | backup ftp bash script | backup ftp+mysql | backup mysql | backup mysql backup.sh | backup mysql debian cron | backup mysql sh cron | backup mysqldump ftp | backup script linux | base mysql sur ftp | boucle sur put ftp | backup de mysql | backup linux ftp | script log ftp linux | backup sur ftp ligne de command elinux | mysql backup ftp | ftp sh | backup script ftp mysql | script sauvegarde automatique base mysql linux | backup mysql vers ftp | backup sql avec upload ftp | bakup mysql | script backup mysql bash | script backup ftp | sauvegarde mysql debian | "mysql -u" ftp | backup save by ftp | backup script ftp | script sauvegarde base sql ovh | backup mysql ftp | backup php de base mysql vers ftp | bash sauvegarde mysql | configurer crontab pour une sauvegarde mysql | cron backup | cron backup garder 5 jours | cron mysql sauvegarde automatique | debian backup script mysql | dedibox backup ftp scripts | export mysql ftp | ftp linux script | ftp script | iggy mysqldump | initialise script base de données exemples bash | linux automatic put ftp | linux backup | linux script sauvegarde | magento database ftp save | mysql backup "which mysqldump" | mysql cron | mysql dump sh | ou sont sauvegardés script msn + | php mysql backup script | php script backup db | problemes sauvegardes r4i | sauvegarde ftp bash | sauvegarde ftp dedibox | sauvegarde ftp mysql | aircrack | outil sauvegarde ftp mysql | sauvegarde log msn ftp | sauvegarde mysql simple | script backup to ftp | script backup vers ftp linux | script bash mysql | script de sauvegarde mysql sur serveur ftp | script ftp | script sauvegarde d'une base mysql | script sauvegarde ftp automatique | script sauvegarde mysql bash | script yafc ubuntu | ssh mysql import export | linux ftp script | mysql multiple bin log | linux script sauvegarde ftp | script de sauvegarde ftp linux | sauvegarder base mysql magento | script linux sauvegarde ftp | mysqldump and ftp | mysql dump ftp | script ftp linux sauvegarde | sauvegarde ftp automatique php | trouver taille fichier lourd linux | tutorial munin | mise à jour script php via ssh | script backup bases de données | cron mysql backup | mysql export import | script backup sur ftp linux | mysqdump ftp | ftp backup ysql | script bash sauvegarde my_sql | backup mysql sur ftp | cron sauvegarde mysql | script linux backup ftp

23 Commentaires

Recevoir les commentaires par email

  1. Fumble dit :

    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 dit :

    Damned, ne faites pas attentions aux fautes ;)

  3. sidhannowe dit :

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

  4. admin dit :

    Content que ca serve ;)
    ++

  5. SnorkY dit :

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

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

  7. Alpha dit :

    Chapeau Admin et grand merçi

  8. [...] 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 dit :

    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. Eric dit :

    Bonjour,

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

    MERCI encore
    Eric

  11. fdez dit :

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

  12. guy dit :

    merci, super ton script

  13. [...] Ce script est dans la ligné de celui du backup de base mysql puis envoie par ftp. [...]

  14. ivan dit :

    superbe script merci beaucoup.
    Pour ceux qui souhaite utiliser ncftp a la place de yafc remplacez la fin par :

    ## Upload sur le ftp
    ncftp -u USER -p MODEPASSE SERVEUR<<EOF
    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 *

  15. Morgan dit :

    Merci beaucoup pour ce script! Je cherchais justement un script de ce type, et avec les précisions d’ivan c’est tout bon! :D

  16. levdamien dit :

    Fonctionne du premier coup ;)

    Thx

  17. Morgan dit :

    Hello!

    Est ce qu’il y a une option pour sauver TOUTES les bases de données sans avoir à les préciser à chaque fois… car 100 bases de données à taper … :(

    Merci!

  18. @Moragn
    De base il te les save toutes.
    Tu indiques celle que tu veux exclure ;)

  19. Morgan dit :

    Ah… j’avais mal lu ^^ nickel, merci alors, je teste ça dans les 2 jours :)

  20. [...] de ne pas utiliser cette possibilité, et d’utiliser un script bash que j’ai trouver ici en le modifiant un peu à mon goût. Il est cependant possible d’utiliser backup-manager pour [...]

  21. ebouilleur dit :

    Super script, il va m’être bien pratique ;)

  22. fdez dit :

    Billyboylindien pourrait on avoir aussi un modéle de script de sauvegarde des BDs avec Postgresql?
    Car nous préférons le SGBD PostGesql.

    Merci d’avance

Trackbacks

  1. [...] 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 [...]

  2. [...] Ce script est dans la ligné de celui du backup de base mysql puis envoie par ftp. [...]

  3. [...] de ne pas utiliser cette possibilité, et d’utiliser un script bash que j’ai trouver ici en le modifiant un peu à mon goût. Il est cependant possible d’utiliser backup-manager pour [...]

URL de trackback: http://www.billyboylindien.com/linux/script-de-backup-mysql-par-ftp.html/trackback/

Commenter

Note: La modération des commentaires est activée