वहाँ अच्छा उपकरण कहा जाता है pv
# On Ubuntu/Debian system
$ sudo apt-get install pv
# On Redhat/CentOS
$ sudo yum install pv
तब जैसे आप इसे इस तरह से उपयोग कर सकते हैं
$ zcat dbpackfile.sql.gz | pv -cN zcat | mysql -uuser -ppass dbname
कृपया मेरे नवीनतम संस्करण के लिए UPDATE 2 की जाँच करें
ps: इस ब्लॉग की जाँच करें http://blog.larsstrand.org/2011/12/tip-pipe-viewer.html
अद्यतन: ऐसा लगता है कि उपरोक्त लिंक टूट गया है, लेकिन मुझे यहाँ एक ही लेख मिला है http://blog.larsstrand.no/2011/12/tip-pipe-viewer.html
अद्यतन 2: पूर्ण प्रगति पट्टी के साथ भी बेहतर समाधान। ऐसा करने के लिए आपको 2 बिल्ड pv
ऑप्शन का उपयोग करने की आवश्यकता है । एक --progress
प्रगति पट्टी को इंगित करना है और दूसरा यह --size
बताना है pv
कि समग्र फ़ाइल कितनी बड़ी है।
pv --progress --size UNPACKED-FILE-SIZE-IN-BYTES
.. समस्या .gz
मूल फ़ाइल आकार के साथ है। आपको किसी भी तरह से बिना किसी स्वनिर्धारित मूल फ़ाइल आकार की जानकारी प्राप्त करने की आवश्यकता है, अन्यथा आप इस फाइल को दो बार अनपैक करने के लिए कीमती समय खो देंगे (पहली बार pv
और दूसरी बार zcat
)। लेकिन सौभाग्य से आपके पास gzip -l
विकल्प है कि हमारी gziped फ़ाइल के बारे में असंपीड़ित जानकारी है। दुर्भाग्य से आपके पास यह तालिका प्रारूप में है, इसलिए आपको इसका उपयोग करने से पहले इसे निकालने की आवश्यकता है। सभी को एक साथ नीचे देखा जा सकता है:
gzip -l /path/to/our/database.sql.gz | sed -n 2p | awk '{print $2}'
उफ़्फ़ .. तो आखिरी चीज़ जो आपको करने की ज़रूरत है वह बस एक साथ सभी को मिलाएं।
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uuser -ppass dbname
इसे और भी अच्छा बनाने के लिए आप इस तरह से प्रोग्रेस NAME जोड़ सकते हैं
zcat /path/to/our/database.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass dbname
अंतिम परिणाम:
Importing.. : [===========================================>] 100%
अद्यतन 3: त्वरित उपयोग के लिए कस्टम फ़ंक्शन बनाएं।
mysql_import() {
zcat $2 | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uuser -ppass $1
}
उपयोग:
mysql_import dbname /path/to/our/database.sql.gz
यदि आप नहीं जानते कि इसे कहां रखा जाए, तो इस उत्तर को पढ़ें:
/unix//a/106606-1756
आप उपनामों के बीच फ़ंक्शंस जोड़ सकते हैं। इसलिए आप उदा ~/.bash_aliases
फ़ाइल का उपयोग कर सकते हैं ।
pv
,cpipe
) इस परिदृश्य में काम करता है?