Question Changer le chemin dans aws


J'ai un script qui sauvegarde la base de données mysql dans aws. J'ai besoin de ajouter un code au script qui supprime les bases de données après une sauvegarde réussie sur aws. Quelqu'un peut-il me guider avec le code. Voici le script

#!/bin/bash

# Basic variables
mysqlpass="mysql"
bucket="s3://akshaysolutionbackup/orbit/"

# Timestamp (sortable AND readable)
stamp=`date +"%d-%m-%Y"`

# List all the databases
databases=`mysql -u root -pmysql -e "SHOW DATABASES;" | tr -d "| " | grep -v "\(Database\|information_schema\|performance_schema\)"`

# Feedback
echo -e "Dumping to \e[1;32m$bucket/$stamp/\e[00m"

# Loop the databases
for db in $databases; do

# Define our filenames
filename="$stamp - $db.sql.gz"
tmpfile="/tmp/$filename"
object="$bucket/$stamp/$filename"

# Feedback
echo -e "\e[1;34m$db\e[00m"

# Dump and zip
echo -e "  creating \e[0;35m$tmpfile\e[00m"
mysqldump -u root -pmysql --force --opt --databases "$db" | gzip -c > $tmpfile"

# Upload
echo -e "  uploading..."
s3cmd put "$tmpfile" "$object"

# Delete
rm -f "$tmpfile"
done;

# Jobs a goodun
echo -e "\e[1;32mJobs a goodun\e[00m"

0
2017-07-28 11:01


origine


Nous vous saurions gré de taper tout le script car je ne pouvais pas obtenir le lien pour le script - darshan krishnaiah
Le lien vers le script est ici  gist.github.com/oodavid/2206527#file-s3mysqlbackup-sh - darshan krishnaiah
Vous pourriez juste faire quelque chose comme echo "drop database $db" | mysql -u root -pmysql. Est-ce que c'est ce que tu veux? - Jos
Je veux que cela soit fait par le script lui-même, une fois que toute la sauvegarde est réussie. Où ajouter le code? Je vais ajouter le script dans crontab. - darshan krishnaiah
Vous pouvez ajouter la commande telle que je l'ai donnée au script, avant la done; ou vous pourriez faire une autre boucle, comme: for db in databases; do echo "drop database $db" | mysql -u root -pmysql done à la fin du script. - Jos


Réponses:


La façon la plus simple de supprimer une base de données à partir d'un script est la suivante:

echo "drop database dbname" | mysql -u username -ppassword

Cela va démarrer le mysql client de ligne de commande et exécuter l'instruction SQL qui lui a été transmise par le echo commander. Dans votre script, vous pouvez soit supprimer la base de données dès qu'elle a été sauvegardée:

echo "drop database $db" | mysql -u username -ppassword

(dans le do/done loop), ou attendez la fin du script, une fois la sauvegarde complète terminée, puis faites une autre boucle dans les bases de données et déposez-les toutes:

for db in databases; do
  echo "drop database $db" | mysql -u username -ppassword
done;

1
2017-07-28 12:10