Finalisation d'un script de backup mysql

Bonsoir à tous

Suite à une aide efficace dernièrement, je reviens vers vous, pour quelque chose qui n’est pas du tout un problème, et pas urgent non plus.
Je cherche surtout des pistes, afin de terminer un script de sauvegarde de base mysql.

Voilà donc le script que j’ai actuellement, éxécutée par un cron tous les jours à 23h30 :

mysqldump --opt -u $USER -p$PASS authentification > $BACKUPDIR/authentification.sql

tar -chzf $BACKUPDIR/auth/bdd-`date +%d%m%Y`-`date +%H%M`.tar.gz $BACKUPDIR/authentification.sql

rm -f $BACKUPDIR/authentification.sql

Ce script que j’ai trouvé sur le net fonctionne très bien. Il fait donc une sauvegarde tous les soirs, la compresse, et la place dans un dossier avec la date et l’heure dans le nom du fichier.
Ensuite il efface le fichier .sql brut.

Maintenant, la base étant quand même lourde, et surtout n’ayant pas besoin des vieilles sauvegardes, j’aimerais que par la même occasion, il efface les archives datant de + de 7 jours, donc théoriquement il doit en effacer 1 par jour, puisque qu’il est éxécutée quotidiennement.

Je sais pas si j’ai été assez compréhensible, et surtout si c’est faisable ? … Je sais le faire en php, mais il me semble que ça serait plus approprié, si c’est possible, de le faire en même temps dans ce script bash.

la réponse a déjà été donnée, mais je rajoute que faire un tar sur un seul fichier ne sert à rien, autant compresser à la volée ton dump :

mysqldump --opt -u $USER -p$PASS authentification | gzip > $BACKUPDIR/auth/bdd-`date +%d%m%Y-%H%M`.gz

tu peux aussi utiliser bzip2 ou xz pour une meilleure compression.

Tout simplement ! Merci à tous les deux, je suis émerveillé par Debian et ses possibilités !

Le script final ressemble à ça, si ça peut aider quelqu’un d’autre :

#!/bin/bash

# Config
USER="root"
PASS="xxxxxxx"
BACKUPDIR="/home/backups/mysqldumps"

# Noms des bases
dbName=( "db1" "db2" "db3" "db4" "db5" )

# Boucle sur chaque base
# - Sauvegarde + compression
# - Effacement archive(s) sup. a 7j
for i in "${dbName[@]}"; do
  mysqldump --opt -u $USER -p$PASS $i | gzip > $BACKUPDIR/$i/$i-`date +%d%m%Y-%H%M`.gz
  find $BACKUPDIR/$i -type f -mtime +7 -name $i-*.gz -exec rm {} \;
done

# Sortie du script

exit

et ça a l’air de fonctionner :slightly_smiling:

Dites moi, que signifie le {} ; à la fin de la commande find ?


config :

[code]/etc/default/automysqlbackup[/code]

config :

{} correspond au nom du fichier trouver par find et ; est le délimiteur de fin de l’argument -exec :wink:

Ah oui je vois je m’en doutais un peu. Merci encore !

Et pour Haludeis : je connais ce paquet je l’ai essayé mais ça ne me plait pas, je préfére le bon vieux script ^^ Merci quand même pour ta proposition

Salut,

Et pour moi “éternel débutant” à part la faculté d’automatiser le script quelle est la différence avec l’export de phpmyadmin ?

Justement l’avantage est l’automatisation.
Couplé à cron, tu peux ainsi faire une sauvegarde tous les jours par exemple.
Ce que tu ne peux pas faire avec phpmyadmin.

Pas de souci, mais pour savoir qu’est ce qu’il ne te plait pas dans le paquet ?

En fait mon script final exécute aussi la sauvegarde d’autres fichiers importants, que je n’ai pas inclus ici puisque ce n’était pas le sujet. Les regrouper m’est plus utile, accessibles au même endroit, et puis ça me permet de m’initier un peu aux scripts Debian au passage.
Plutôt que de m’appuyer sur un tout prêt, malgré qu’on ne ré-invente pas la roue, quand c’est relativement simple comme ici, j’écris volontiers ces 10 lignes de code plutôt que d’installer un nouveau paquet.
Puis de cette manière, je sais qu’à 23h30 tous les soirs, mes bases et mes fichiers sont archivés, je sais pourquoi et de quelle façon, et s’il faut modifier quoi que ce soit où étendre cette procédure je sais de suite où aller.

Salut,

[quote=“Niloo”]Justement l’avantage est l’automatisation.
Couplé à cron, tu peux ainsi faire une sauvegarde tous les jours par exemple.
Ce que tu ne peux pas faire avec phpmyadmin.[/quote]

Merci :041