Ich schreibe einen einzigen Zeilenbefehl, der alle Datenbanken in ihren jeweiligen Namen statt Dumping alles in einem sql sichert.mysqldump mit db in einer separaten Datei
zB: DB1 gerettet werden db1.sql und db2 gespeichert wird
Bisher db2.sql hatte ich die folgenden Befehle gesammelt alle Datenbanken abzurufen.
mysql -uuname -ppwd -e 'show databases' | grep -v 'Database'
Ich plane es mit awk Rohr etwas wie
awk '{mysqldump -uuname -ppwd $1 > $1.sql}'
zu tun, aber das funktioniert nicht.
Ich bin neu zu bash, also könnte ich falsch in meinem Denken sein.
Was soll ich tun, damit die db in ihren jeweiligen Namen exportiert wird?
update:
Ok, muss endlich geschafft haben, es funktioniert von den Hinweisen unten zu bekommen.
Dies ist das letzte Skript
# 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
Das Echo Teil allerdings nicht funktioniert.
Das Echo funktioniert nicht, weil es in ~/db_backup/$ dbname.sql umgeleitet wird. Ihr mysqldump funktioniert wahrscheinlich auch nicht - so wie es hier geschrieben ist, es ist einfach ein Argument für das Echo. Ich würde empfehlen, das Argument mysqldump --result-file zu verwenden, anstatt umzuleiten, einfach um zu klären, was passiert. –
mindestens müssen Sie ein ";" hinzufügen Nach echo 'Dumping $ dbname' – Nadir