मैं एक सिंगल लाइन कमांड लिख रहा हूं जो सभी डेटाबेस को अपने संबंधित नामों में बैकअप करता है, बजाय सभी को एक वर्ग में डंपिंग का उपयोग करके बैकअप करता है।mysqldump एक अलग फ़ाइल में डीबी के साथ
उदाहरण के लिए: DB1 db1.sql को सहेज और डीबी 2 अब तक
db2.sql को सहेजा जाता है, मैं निम्न कमांड सभी डेटाबेस को पुनः प्राप्त करने के लिए एकत्र हुए थे।
mysql -uuname -ppwd -e 'show databases' | grep -v 'Database'
मैं awk साथ पाइप की योजना बना रहा हूँ यह कैसा
awk '{mysqldump -uuname -ppwd $1 > $1.sql}'
कुछ करने के लिए लेकिन यह काम नहीं करता।
मैं बैश करने के लिए नया हूं, इसलिए मैं अपनी सोच में गलत हो सकता था।
इसे डीबी को अपने संबंधित नामों में निर्यात करने के लिए मुझे क्या करना चाहिए?
अद्यतन:
ठीक है, अंततः इसे नीचे दिए गए संकेतों से काम करने में कामयाब होना है।
इस अंतिम स्क्रिप्ट
# 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
की हालांकि काम नहीं करता गूंज हिस्सा है।
क्योंकि यह ~/db_backup/$ dbname.sql में पुनः निर्देशित किया जाता गूंज काम नहीं करता है के लिए काम किया है। आपका mysqldump भी काम नहीं कर रहा है - जिस तरह से यह लिखा गया है, यह सिर्फ गूंज के लिए एक तर्क है। मैं पुनर्निर्देशित करने के बजाय mysqldump --result-file तर्क का उपयोग करने की अनुशंसा करता हूं, बस यह स्पष्ट करने के लिए कि क्या हो रहा है। –
कम से कम आपको ";" जोड़ना होगा गूंजने के बाद 'डबिंग $ dbname' – Nadir