vi /root/mysqlbackup.sh
"copie-colle" le script suivant dedans.
#!/bin/bash
# Par David H. 16.12.2010
USER="SET-MYSQL-USER-NAME"
PASSWORD="SET-PASSWORD"
HOST="localhost"
OUTPUTDIR="/var/backups/mysql"
MYSQLDUMP="$(which mysqldump)"
MYSQL="$(which mysql)"
GZIP="$(which gzip)"
NOW="$(date +"%H00.%F")"
[ ! -d $OUTPUTDIR ] && mkdir -p $OUTPUTDIR || :
find $OUTPUTDIR -type f -mtime +7 -exec rm {} \;
DATABASES="$($MYSQL --host=$HOST --user=$USER --password=$PASSWORD -Bse 'SHOW DATABASES')"
for db in $DATABASES
do
$MYSQLDUMP --host=$HOST --user=$USER --password=$PASSWORD $db | $GZIP -9 > $OUTPUTDIR/$db.$NOW.sql.gz
done
il ne te reste plus qu'a rendre le script /root/mysqlbackup.sh exécutable...
sudo chown root:root /root/mysqlbackup.sh
sudo chmod 700 /root/mysqlbackup.sh
... qu' a le place dans le crontab de root ...
sudo crontab -eu root
et a rajouter la ligne suivante :
0 */6 * * * /root/mysqlbackup.sh
Dans notre cas précis, les bases sont sauvegardées toutes les 6h ( cf: la mise en place du cron )
et les archives sont conservé 7 jours ( cf: la ligne du script /root/mysqlbackup.sh )
find $OUTPUTDIR -type f -mtime +7 -exec rm {} \;
Aucun commentaire:
Enregistrer un commentaire