Besoin d'aide pour corriger mon script Bash

0

Je suis un débutant sur le script bash, ce que j'essaie de faire est de créer un script bash permettant d'exécuter 2 types de processus de sauvegarde pour mysql. La première consiste à vider toute la base de données mysql dans un seul fichier de sauvegarde et un autre consiste à sauvegarder chaque base de données en fichier unique, je cherche quelques astuces pour créer un script bash et le résultat ci-dessous, mais ne semble pas fonctionner comme prévu, j’essaie d’exécuter le script mais rien ne se passe, je suis heureux de pouvoir l’aider à le réparer .

#!/bin/bash

TIMESTAMP=$(date "+%d-%m-%Y")
BACKUP_DIR="/nas/mysql"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump

backup_all_dump(){ 
find /nas/mysql/all_dump -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
mkdir -p "$BACKUP_DIR/all_dump/$TIMESTAMP"
  $MYSQLDUMP --force --events --all-databases | gzip > "/$BACKUP_DIR/all_dump/$TIMESTAMP/dump.sql.gz"
}

backup_all_users(){ 
find /nas/mysql/all_users -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
mkdir -p "$BACKUP_DIR/all_users/$TIMESTAMP"
databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
  for db in $databases; do
  $MYSQLDUMP --force --opt --databases "$db" | gzip > "$BACKUP_DIR/all_users/$TIMESTAMP/$db.gz"
done
}
Zainul Halim
la source

Réponses:

0
#!/bin/bash

TIMESTAMP=$(date "+%d-%m-%Y")
BACKUP_DIR="/nas/mysql"
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump

backup_all_dump(){ 
find /nas/mysql/all_dump -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
mkdir -p "$BACKUP_DIR/all_dump/$TIMESTAMP"
  $MYSQLDUMP --force --events --all-databases | gzip > "/$BACKUP_DIR/all_dump/$TIMESTAMP/dump.sql.gz"
}

backup_all_users(){ 
find /nas/mysql/all_users -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
mkdir -p "$BACKUP_DIR/all_users/$TIMESTAMP"
databases=`$MYSQL -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema)"`
  for db in $databases; do
  $MYSQLDUMP --force --opt --databases "$db" | gzip > "$BACKUP_DIR/all_users/$TIMESTAMP/$db.gz"
done
}

Vous devez appeler la fonction

backup_all_dump

Vous devez appeler la fonction

backup_all_users
ackwdw123
la source
Cher Monsieur, est-il possible que je viens d'exécuter le script et d'exécuter ces processus sans appeler de fonction? Heureux de l'aide et TQ tellement
Zainul Halim
Ajoutez ces deux lignes au bas de votre code pour exécuter les fonctions lorsque le code est exécuté: backup_all_dump [[line line]] backup_all_users
ackwdw123