#1 Le 16/12/2020, à 03:23
- waca
[RESOLU] Cron pour backup compresser mysql versionning
Bonjour à tou(te)s,
Comment ajouter au dump
- compression
- date/heure au nom du fichier compressé ?
Voici mon code dans le cron
10 * * * * /bin/bash -c 'mysqldump --lock-tables=0 -h localhost -u moi -pmonpass base01 --add-drop-table > /home/moi/backup/base01.sql'
Merci d'avance.
Waca.
Dernière modification par waca (Le 17/12/2020, à 23:46)
Hors ligne
#2 Le 16/12/2020, à 09:46
- Watael
Re : [RESOLU] Cron pour backup compresser mysql versionning
salut,
il faut connecter (pipe) la sortie de mysqldump au programme de compression, et ajouter la date dans le nom du fichier vers lequel est redirigé* la sortie du programme de compression.
--
* ou qui est passé en argument à ce programme.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#3 Le 17/12/2020, à 00:52
- waca
Re : [RESOLU] Cron pour backup compresser mysql versionning
Merci mais du coup la 'sortie' n'est plus bonne
mysqldump --lock-tables=0 -h localhost -u moi -pmonPass base01 -drop-table | gzip > /home/moi/backup`date '+%F'`.base01.gz
SANS ajout de la date, mon fichier compressé fait 1.9 Mo
AVEC ajout de la date, il fait 20 o !!!
J'ai essayé de mettre la date au début ou en fin du nom de fichier, c'est pareil !
Hors ligne
#4 Le 17/12/2020, à 01:29
- Watael
Re : [RESOLU] Cron pour backup compresser mysql versionning
la ligne de commande semble correcte.
par contre, il y a une coquille : je ne trouve pas d'option -drop-table; je ne vois que --add-drop-table et --skip-add-drop-table.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 17/12/2020, à 03:03
- waca
Re : [RESOLU] Cron pour backup compresser mysql versionning
Ca progresse merci, donc c'est OK en ligne de commande... mais pas à travers le cron
Je pense que les ' ` mettent la pagaille ??!
30 * * * * /bin/bash -c 'mysqldump --lock-tables=0 -h localhost -u moi -pmonPass base01 --add-drop-table | gzip > /home/moi/backup/base01`date '+%F'`.gz'
Avec ça, il ne se passe rien du tout en cron
Hors ligne
#6 Le 17/12/2020, à 03:18
- Watael
Re : [RESOLU] Cron pour backup compresser mysql versionning
ah ! c'est le % : dans une crontab, cela indique une fin de ligne; il faut le protéger avec un antislash.
tu peux adapter la commande date :
... | gzip > "$(date +'/home/moi/backup/base01_\%F.gz)"
NB: on n'utilise plus les backticks (`) pour effectuer une Substitution de commandes.
depuis longtemps déjà on utilise la forme $(cmd)
EDIT (correction) :
... | gzip > "$(date +'/home/moi/backup/base01_\%F.gz')"'
Dernière modification par bruno (Le 17/12/2020, à 15:31)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#7 Le 17/12/2020, à 06:34
- waca
Re : [RESOLU] Cron pour backup compresser mysql versionning
hé bien ça ne le fait pas :
30 * * * * /bin/bash -c 'mysqldump --lock-tables=0 -h localhost -u moi -pmonPass base01 --add-drop-table | gzip > "$(date +'/home/moi/backup/base01_\%F.gz)"
Il y a un ' juste au début de la commande mysqldump et tu en mets un juste avant le /home/moi.....
bien sûr j'ai essayé de mettre ce ' après le " ; voire d'enlever celui avant /home/.... mais c'est KO
je pense qu'il y a encore un "détail" qui ne semble pas en être un qui est pénalisant.
Hors ligne
#8 Le 17/12/2020, à 07:20
- Watael
Re : [RESOLU] Cron pour backup compresser mysql versionning
il faut en ajouter deux :
- 1 après gz,
- 1 à la fin de la ligne de commande.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#9 Le 17/12/2020, à 11:33
- waca
Re : [RESOLU] Cron pour backup compresser mysql versionning
Merci pour ta patience, mais ça ne le fait toujours pas.
J'ai rajouté ' juste après --add-drop-table
et aprés F.gz')
30 * * * * /bin/bash -c 'mysqldump --lock-tables=0 -h localhost -u moi -pmonPass base01 --add-drop-table' | gzip > "$(date +'/home/moi/backup/base01_\%F.gz')"
J'ai même essayé de ne PAS mettre après le -table et de mettre tout à la fin gz')"'
donc après la fin )" mais bof
Ca ne créé aucun fichier.
Hors ligne
#10 Le 17/12/2020, à 13:06
- bruno
Re : [RESOLU] Cron pour backup compresser mysql versionning
Salut,
Par qui est exécutée cette tâche cron ? Dans quel fichier est-elle ?
Je ne vois pas l'utilité de /bin/bash -c
Oublie les options lock-tables (qui est incorrecte) et --add-drop-tables (qui est par défaut). Il vaut mieux aussi éviter de mettre des mots de passe dans des scripts.
Tu aurais tout intérêt à créer un petit script bash exécutable qui fait la sauvegarde de la base et à l'appeler via cron. Ce sera plus souple et plus facile à faire évoluer.
Sinon essaie comme cela :
30 * * * * the_date=$(date +%F) && mysqldump -h localhost -u moi -pmonPass base01 | gzip > home/moi/backup/base01_${the_date}.gz
Dernière modification par bruno (Le 17/12/2020, à 13:13)
#11 Le 17/12/2020, à 15:02
- Watael
Re : [RESOLU] Cron pour backup compresser mysql versionning
j'ai donné la solution au #6, dans l'EDIT.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 17/12/2020, à 15:31
- bruno
Re : [RESOLU] Cron pour backup compresser mysql versionning
Ah oui, je n'avais pas vu qu'en #9 il manquait encore un ' en fin de ligne.
#13 Le 17/12/2020, à 15:48
- Watael
Re : [RESOLU] Cron pour backup compresser mysql versionning
"c'est pas la cata", puisque, à terme, le bash -c inutile va disparaître.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#14 Le 17/12/2020, à 23:45
- waca
Re : [RESOLU] Cron pour backup compresser mysql versionning
Merci encore pour votre aide qui m'aura permis de
1°) Que ce soit fonctionnel
2°) De 'nettoyer' cette ligne
3°) De ne pas comprendre pourquoi ça fonctionnait en term mais pas en cron, mais
bon, au moins, ça tourne comme je veux.
Merci encore pour votre patience.
Hors ligne
#15 Le 18/12/2020, à 00:13
- Watael
Re : [RESOLU] Cron pour backup compresser mysql versionning
3) une option estropiée, le %, les ' ...
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne