Sto scrivendo un comando a riga singola che esegue il backup di tutti i database nei rispettivi nomi utilizzando invece il dumping tutto in un sql.mysqldump con db in un file separato
Esempio: DB1 vengono salvati per db1.sql e DB2 viene salvato db2.sql
Finora, avevo raccolto i seguenti comandi per recuperare tutti i database.
mysql -uuname -ppwd -e 'show databases' | grep -v 'Database'
Sto pensando di tubo con awk fare qualcosa di simile
awk '{mysqldump -uuname -ppwd $1 > $1.sql}'
Ma questo non funziona.
Sono nuovo di bash, quindi potrei sbagliarmi nel mio modo di pensare.
Cosa devo fare per farlo esportare il db nei loro rispettivi nomi?
aggiornamento:
Ok, è finalmente riuscito a farlo funzionare seguendo i suggerimenti qui sotto.
Questo è lo script finale
# replace [] with your own config
# replace own dir to save
# echo doesn't work. hmm...
mysql -u[uname] -p'[pwd]' -e "show databases" \
| grep -Ev 'Database|information_schema' \
| while read dbname; \
do \
echo 'Dumping $dbname' \
mysqldump -u[uanme] -p'[pwd]' $dbname > ~/db_backup/$dbname.sql;\
done
La parte eco della non funziona però.
L'eco non funziona perché viene reindirizzato in ~/db_backup/$ dbname.sql. Probabilmente il tuo mysqldump non funziona - il modo in cui è scritto qui, è semplicemente un argomento per l'eco. Consiglierei di usare l'argomento mysqldump --result-file invece di reindirizzare, semplicemente per chiarire cosa sta succedendo. –
almeno devi aggiungere un ";" after echo 'Dumping $ dbname' – Nadir