जैसा कि ल्यूक ने कहा, mysqldump को -no-data विकल्प वही करेगा जो आप चाहते हैं।
इसके साथ जोड़ने के लिए, यहाँ एक बैकअप स्क्रिप्ट है जो मैंने लिखा है कि सभी mysql डेटाबेस को सादे पाठ फ़ाइलों के लिए डंप करता है, और प्रत्येक डेटाबेस की तालिका स्कीमा और डेटा के लिए अलग डंप फ़ाइलें बनाता है (यह किसी अन्य mysll सर्वर पर तालिकाओं को पुनर्स्थापित करना या बनाना बिना सामान्य है) डेटा, और यह करना बहुत आसान है, जब आपके पास पहले से ही एक छोटी फाइल है, जिसमें केवल CREATE TABLE / CREATE INDEX आदि शामिल हैं]
#! / Bin / bash
# backup-mysql.sh
#
# क्रेग सैंडर्स <cas@taz.net.au>
# यह स्क्रिप्ट पब्लिक डोमेन में है। आप इसके साथ जो चाहें करें।
MyUser = "उपयोगकर्ता नाम"
MYPWD = "PASSWD"
ARGS = "- एकल-लेनदेन --flush-लॉग - अपूर्ण-सम्मिलित करें"
DATABASES = $ (mysql -D mysql --skip-column-names -B-'' show database; '; egrep -v' information_schema ');
BACKUPDIR = / var / बैकअप / mysql
YEAR = $ (दिनांक + "% Y")
महीने = $ (दिनांक + "% m")
DAY = $ (दिनांक + "% d")
Date = "$ साल $ MONTH / $ साल $ MONTH- $ दिन"
mkdir -p $ BACKUPDIR / $ DATE
cd $ BACKUPDIR / $ DATE
के लिए मैं $ DATABASES में; कर
इको-एन "बैकअप $ मैं: स्कीमा ..."
mysqldump $ ARGS --no-data -u $ MYUSER -p $ MYPWD $ i> $ i.schema.sql
इको-एन "डेटा ..."
mysqldump $ ARGS --skip-opt --no-create-db --no-create-info -u $ MYUSER -p $ MYPWD $ i> $ i.data.sql
इको-एन "कंप्रेसिंग ..."
gzip -9fq $ i.schema.sql $ i.data.sql
गूंज "किया।"
किया हुआ
# 30 दिनों से पुराने बैकअप फ़ाइलों को हटा दें
OLD = $ ($ BACKUPDIR -type d -mtime +30 खोजें)
अगर [-n "$ OLD"]; फिर
पुरानी बैकअप फ़ाइलों को हटाने की गूंज: $ OLD
गूंज $ OLD | xargs rm -rfv
फाई