Une place pour une véritable innovation. Partagez vos propres utilitaires créés avec la communauté Manjaro.
Questions et discussions sur la programmation et le codage.
Répondre

Script shell de sauvegarde MySQL

#1Messageil y a 4 ans

Bonsoir,

J'ai créé un petit script pour sauvegarder quotidiennement ma base de donnée du forum que j'"administre" (que j'essaie d'administer serait plus juste).

Voici le script :

#!/bin/bash

#Variable du forum

user_forum="xxxxxx"
password_forum="xxxxxxx"
host_forum="xxxxxx"
dbname_forum="xxxxxx.sql"
date="date +%y_%m_%d"

#Autres options

backup_path="/home/xxxxxx/Sauvegardes_bd_forum/"

#Sauvegarde de la base de donnée de xx
mysqldump -h $host_forum -u $user_forum -p $password_forum -r $backuppath/backup$date.sql $dbname_forum

#Compression de la base de données
tar -czvf $backuppath/backup$date.tar.gz $backuppath/backup$date.sql

#Suppression de la base de donnée du dossier de Filezilla
rm $backuppath/backup$date.sql

#Suppression des fichiers plus vieux d'une semaine
find $backup_path/* -mtime +7 -exec rm {} ;
Et voici le retour du shell :

[xxxxxx@pagirnis ~]$ ./sql.sh 
mysqldump: Can't create/write to file '/backupdate' (Errcode: 13 "Permission denied")
tar: +%y%m%d.tar.gz: Cannot stat: No such file or directory
tar: Removing leading /' from member names
tar: /backupdate: Cannot stat: No such file or directory
tar: +%y_%m_%d.sql: Cannot stat: No such file or directory
tar (child): /backupdate: Cannot open: Permission denied
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
rm: cannot remove '/backupdate': No such file or directory
rm: cannot remove '+%y_%m_%d.sql': No such file or directory
find: missing argument to -exec'
Pourquoi ne peut-il créer ou écrire le fichier /backupdate ?

J'ai donné au script les droits 700.

Merci à tous.

Script shell de sauvegarde MySQL

#2Messageil y a 4 ans

J'ai fait une deuxième tentative car je me suis aperçu d'une erreur dans le script.

J'avais écrit : backuppath alors que j'avais défini la variable backup_path.

Donc, j'ai tout remplacé dans le script et maintenant voici encore une erreur :

[xxx@pagirnis ~]$ ./sql.sh 
Enter password: 
mysqldump: Got error: 1044: "Access denied for user 'xxxxxx'@'pagirnis.cloudlix.com' to database mot_de_passe_du_cPanel when selecting the database
tar: +%y_%m_%d.tar.gz: Cannot stat: No such file or directory
tar: Removing leading `/' from member names
tar (child): /backupdate: Cannot open: Permission denied
tar (child): Error is not recoverable: exiting now
/home/xxxxxx/Sauvegardes_bd_forum//backupdate
tar: +%y_%m_%d.sql: Cannot stat: No such file or directory
tar: Child returned status 2
tar: Error is not recoverable: exiting now
rm: cannot remove '+%y_%m_%d.sql': No such file or directory
find: missing argument to `-exec'
Là, je ne comprends plus rien :

1) pourquoi me demande-t-il à nouveau le mot de passe dès l'exécution du script, alors qu'il est défini dès le début de clui-ci password_forum=xxxxxx

2) je ne comprends pas l'erreur : Got error: 1044: "Access denied for user 'xxxxxx'@'pagirnis.cloudlix.com' to database mot_de_passe_du_cPanel when selecting the database
pourquoi reprend-t-il le mot de passe du cPanel après database ? :rendre::rendre:

Script shell de sauvegarde MySQL

#3Messageil y a 4 ans

Salut,

Ta variable de date n'est pas bonne, c'est une commande, normalement ce devrait être :
date=$(date +%y_%m_%d)

Je ne peux pas t'aider pour ton problème d'accès.

Script shell de sauvegarde MySQL

#4Messageil y a 4 ans

bonjour,

pour le non d'utilisateur, il ajoute le nom de domaine de ta config "@pagirnis..." avec l'option -h , c'est possible que cela ne soit pas le bon...

A toi de voir quel est le bon nom d'utilisateur dans ton phpmyadmin et si il a bien les bons droits

On ne peut t'aider pour "login@hote" c'est a toi de voir

Script shell de sauvegarde MySQL

#5Messageil y a 4 ans

Script shell de sauvegarde MySQL

#6Messageil y a 4 ans

il est possible d'entrer directement une commande sql avec ta version ;) on la trouve facilement sur le web

select user, host from mysql.user;
---
sinon il faut voir avec ton hébergeur ...

---
note code :
Autant stopper le bash si tu as une erreur : pas d’intérêt (voir dangereux) de continuer les autres commandes

mysqldump -h xxxxxxxxxxxxxxxxxxxxx...
(($? != 0)) && { echo "erreur sauvegarde sql"; exit 1; } # quitter si retour du dump est différent de zéro

tar -czvf xxxxxxxxxxxxxxxxx...

Script shell de sauvegarde MySQL

#7Messageil y a 4 ans

Merci du conseil ;)

J'ai fait un ticket à mon hébergeur, car impossible de :

GRANT ALL PRIVILEGES ON elevage.* TO 'student'@'localhost';
Il me renvoit une erreur : 42000 !! (erreur de syntaxe) - j'ai bien sûr adapté la ligne de code plus haut.
Répondre